summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoroleg <oleg@FreeBSD.org>2006-08-02 14:58:51 +0000
committeroleg <oleg@FreeBSD.org>2006-08-02 14:58:51 +0000
commit8cf9fe14083dc8e863c2ef00beb97b213ac02463 (patch)
tree7a3f3371e08ce6778bae0f98e2ecea4b6761fbc2
parentfb3cc7e20d4dc14e023e3b74c45eab2bb968aaeb (diff)
downloadFreeBSD-src-8cf9fe14083dc8e863c2ef00beb97b213ac02463.zip
FreeBSD-src-8cf9fe14083dc8e863c2ef00beb97b213ac02463.tar.gz
Do not leak memory while flushing rules.
Noticed by: yar Approved by: glebius (mentor) MFC after: 1 week
-rw-r--r--sys/netinet/ip_fw2.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/netinet/ip_fw2.c b/sys/netinet/ip_fw2.c
index 64cfeeb..fd1ab2d 100644
--- a/sys/netinet/ip_fw2.c
+++ b/sys/netinet/ip_fw2.c
@@ -3957,9 +3957,10 @@ ipfw_ctl(struct sockopt *sopt)
IPFW_WLOCK(&layer3_chain);
layer3_chain.reap = NULL;
free_chain(&layer3_chain, 0 /* keep default rule */);
- rule = layer3_chain.reap, layer3_chain.reap = NULL;
+ rule = layer3_chain.reap;
+ layer3_chain.reap = NULL;
IPFW_WUNLOCK(&layer3_chain);
- if (layer3_chain.reap != NULL)
+ if (rule != NULL)
reap_rules(rule);
break;
OpenPOWER on IntegriCloud