]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
pf: Always initialise pf_fragment.fr_flags
authorkp <kp@FreeBSD.org>
Wed, 29 Jul 2015 06:35:36 +0000 (06:35 +0000)
committerkp <kp@FreeBSD.org>
Wed, 29 Jul 2015 06:35:36 +0000 (06:35 +0000)
commitbfd9b9631461bd4158af42c519c70ab0fb9c442e
treea807aaf2516e31a20415dd96f1e588387b072b6b
parent6b0f23aa74024f30bd5dcb208dd6b97b348d491d
pf: Always initialise pf_fragment.fr_flags

When we allocate the struct pf_fragment in pf_fillup_fragment() we forgot to
initialise the fr_flags field. As a result we sometimes mistakenly thought the
fragment to not be a buffered fragment. This resulted in panics because we'd end
up freeing the pf_fragment but not removing it from V_pf_fragqueue (believing it
to be part of V_pf_cachequeue).
The next time we iterated V_pf_fragqueue we'd use a freed object and panic.

While here also fix a pf_fragment use after free in pf_normalize_ip().
pf_reassemble() frees the pf_fragment, so we can't use it any more.

PR: 201879, 201932
MFC after: 5 days
sys/netpfil/pf/pf_norm.c