diff options
author | kp <kp@FreeBSD.org> | 2017-04-08 09:48:21 +0000 |
---|---|---|
committer | kp <kp@FreeBSD.org> | 2017-04-08 09:48:21 +0000 |
commit | 649e7ba54470144c01ab6995ee6bd45d9a62bdde (patch) | |
tree | 44028fff0d8344d2013e699252664b14c013330a /sys/netpfil/pf/pf.c | |
parent | b4bfece8f8006e0ef04a60a4166455e1f9edb45c (diff) | |
download | FreeBSD-src-649e7ba54470144c01ab6995ee6bd45d9a62bdde.zip FreeBSD-src-649e7ba54470144c01ab6995ee6bd45d9a62bdde.tar.gz |
MFC r316355
pf: Fix leak of pf_state_keys
If we hit the state limit we returned from pf_create_state() without cleaning
up.
PR: 217997
Submitted by: Max <maximos@als.nnov.ru>
Diffstat (limited to 'sys/netpfil/pf/pf.c')
-rw-r--r-- | sys/netpfil/pf/pf.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/netpfil/pf/pf.c b/sys/netpfil/pf/pf.c index 64cea2f..8dc89a8 100644 --- a/sys/netpfil/pf/pf.c +++ b/sys/netpfil/pf/pf.c @@ -3547,7 +3547,7 @@ pf_create_state(struct pf_rule *r, struct pf_rule *nr, struct pf_rule *a, (counter_u64_fetch(r->states_cur) >= r->max_states)) { counter_u64_add(V_pf_status.lcounters[LCNT_STATES], 1); REASON_SET(&reason, PFRES_MAXSTATES); - return (PF_DROP); + goto csfailed; } /* src node for filter rule */ if ((r->rule_flag & PFRULE_SRCTRACK || |