summaryrefslogtreecommitdiffstats
path: root/sys/contrib
diff options
context:
space:
mode:
authordhartmei <dhartmei@FreeBSD.org>2006-01-19 11:46:45 +0000
committerdhartmei <dhartmei@FreeBSD.org>2006-01-19 11:46:45 +0000
commitdcc542fe973fa0329392267a3cc5474ee3b0b683 (patch)
treeab727f08271657f1bbc5b91f332560b3d7e4e28e /sys/contrib
parentfe60356e678d0d180f0fd520fa02776f76af65fd (diff)
downloadFreeBSD-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.c2
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,
OpenPOWER on IntegriCloud