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)
This commit is contained in:
parent
2f0ae7721d
commit
0b7eba6ad4
@ -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;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user