Fix a use after free panic in ipfilter's fragment processing.

Memory is malloc'd, then a search for a match in the fragment table
is made and if the fragment matches, the wrong fragment table is
freed, causing a use after free panic. This commit fixes this.

A symptom of the problem is a kernel page fault in bcopy() called by
ipf_frag_lookup() at line 715 in ip_frag.c. Another symptom is a
kernel page fault in ipf_frag_delete() when called by ipf_frag_expire()
via ipf_slowtimer().

MFC after:	1 week
This commit is contained in:
Cy Schubert 2017-04-14 03:54:36 +00:00
parent 8d16945419
commit 666bd4d253

View File

@ -474,7 +474,7 @@ ipfr_frag_new(softc, softf, fin, pass, table
IPFR_CMPSZ)) {
RWLOCK_EXIT(lock);
FBUMPD(ifs_exists);
KFREE(fra);
KFREE(fran);
return NULL;
}