Index: ipfrag.c =================================================================== RCS file: /cvs/honeyd/ipfrag.c,v retrieving revision 1.9 diff -u -r1.9 ipfrag.c --- ipfrag.c 17 Apr 2002 16:38:40 -0000 1.9 +++ ipfrag.c 19 Feb 2003 02:59:39 -0000 @@ -241,12 +241,12 @@ if (prev && prev->off + prev->len > off) { overlap = prev->off + prev->len - off; - if (overlap > len) { + if (overlap >= len) { if (fragq->fragp == FRAG_NEW) { u_char *odata = prev->data + off - prev->off; memcpy(odata, ent->data, len); } - goto drop_fragment; + goto free_fragment; } if (fragq->fragp == FRAG_OLD) { @@ -316,6 +316,7 @@ drop_fragment: TAILQ_REMOVE(&fragq->fraglist, ent, next); + free_fragment: ip_fragent_free(ent); return (0); }