diff options
author | dhartmei <dhartmei@FreeBSD.org> | 2006-01-19 11:46:45 +0000 |
---|---|---|
committer | dhartmei <dhartmei@FreeBSD.org> | 2006-01-19 11:46:45 +0000 |
commit | dcc542fe973fa0329392267a3cc5474ee3b0b683 (patch) | |
tree | ab727f08271657f1bbc5b91f332560b3d7e4e28e /sys/contrib | |
parent | fe60356e678d0d180f0fd520fa02776f76af65fd (diff) | |
download | FreeBSD-src-dcc542fe973fa0329392267a3cc5474ee3b0b683.zip FreeBSD-src-dcc542fe973fa0329392267a3cc5474ee3b0b683.tar.gz |
fix a bug in the fragment cache (used for 'scrub fragment crop/drop-ovl',
but not 'fragment reassemble'), which can cause some fragments to get
inserted into the cache twice, thereby violating an invariant, and panic-
ing the system subsequently.
Reviewed by: mlaier
MFC after: 1 day
Diffstat (limited to 'sys/contrib')
-rw-r--r-- | sys/contrib/pf/net/pf_norm.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/contrib/pf/net/pf_norm.c b/sys/contrib/pf/net/pf_norm.c index 36e210e..0efe97f 100644 --- a/sys/contrib/pf/net/pf_norm.c +++ b/sys/contrib/pf/net/pf_norm.c @@ -824,7 +824,7 @@ pf_fragcache(struct mbuf **m0, struct ip *h, struct pf_fragment **frag, int mff, } else { hosed++; } - } else { + } else if (frp == NULL) { /* There is a gap between fragments */ DPFPRINTF(("fragcache[%d]: gap %d %d-%d (%d-%d)\n", h->ip_id, -aftercut, off, max, fra->fr_off, |