diff options
author | oleg <oleg@FreeBSD.org> | 2006-08-02 14:58:51 +0000 |
---|---|---|
committer | oleg <oleg@FreeBSD.org> | 2006-08-02 14:58:51 +0000 |
commit | 8cf9fe14083dc8e863c2ef00beb97b213ac02463 (patch) | |
tree | 7a3f3371e08ce6778bae0f98e2ecea4b6761fbc2 /sys/netinet | |
parent | fb3cc7e20d4dc14e023e3b74c45eab2bb968aaeb (diff) | |
download | FreeBSD-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
Diffstat (limited to 'sys/netinet')
-rw-r--r-- | sys/netinet/ip_fw2.c | 5 |
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; |