summaryrefslogtreecommitdiffstats
path: root/sys/netpfil
diff options
context:
space:
mode:
authorkp <kp@FreeBSD.org>2015-06-10 13:44:04 +0000
committerkp <kp@FreeBSD.org>2015-06-10 13:44:04 +0000
commitadee32cbccb41cbc7ee4dc15f78280445df950b6 (patch)
tree61ff8e71e29b69df74d13f951267066fa52d4dd8 /sys/netpfil
parent468223b09d77b5c82e5a43ec1bb1046d8e6a77d4 (diff)
downloadFreeBSD-src-adee32cbccb41cbc7ee4dc15f78280445df950b6.zip
FreeBSD-src-adee32cbccb41cbc7ee4dc15f78280445df950b6.tar.gz
pf: address family must be set when creating a pf_fragment
Fix a panic when handling fragmented ip4 packets with 'drop-ovl' set. In that scenario we take a different branch in pf_normalize_ip(), taking us to pf_fragcache() (rather than pf_reassemble()). In pf_fragcache() we create a pf_fragment, but do not set the address family. This leads to a panic when we try to insert that into pf_frag_tree because pf_addr_cmp(), which is used to compare the pf_fragments doesn't know what to do if the address family is not set. Simply ensure that the address family is set correctly (always AF_INET in this path). PR: 200330 Differential Revision: https://reviews.freebsd.org/D2769 Approved by: philip (mentor), gnn (mentor)
Diffstat (limited to 'sys/netpfil')
-rw-r--r--sys/netpfil/pf/pf_norm.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/netpfil/pf/pf_norm.c b/sys/netpfil/pf/pf_norm.c
index 3f210c2..3888ef6 100644
--- a/sys/netpfil/pf/pf_norm.c
+++ b/sys/netpfil/pf/pf_norm.c
@@ -823,6 +823,7 @@ pf_fragcache(struct mbuf **m0, struct ip *h, struct pf_fragment **frag, int mff,
(*frag)->fr_max = 0;
(*frag)->fr_src.v4 = h->ip_src;
(*frag)->fr_dst.v4 = h->ip_dst;
+ (*frag)->fr_af = AF_INET;
(*frag)->fr_id = h->ip_id;
(*frag)->fr_timeout = time_uptime;
OpenPOWER on IntegriCloud