]> git.ipfire.org Git - thirdparty/xtables-addons.git/commitdiff
TARPIT: fix memory leak when tarpit_generic() fails
authorJosh Hunt <johunt@akamai.com>
Wed, 1 Aug 2012 22:07:42 +0000 (00:07 +0200)
committerJan Engelhardt <jengelh@inai.de>
Thu, 2 Aug 2012 15:48:05 +0000 (17:48 +0200)
Currently tarpit_generic() just returns on failure, but this does not
free nskb.

Signed-off-by: Josh Hunt <johunt@akamai.com>
doc/changelog.txt
extensions/xt_TARPIT.c

index 14db878c65c06531efe28bb1d3d6a361ad78adaf..c4a7eadfe78aef61bc3aa59b242885b208dcde87 100644 (file)
@@ -3,6 +3,7 @@ HEAD
 ====
 Fixes:
 - length2, SYSRQ, RAWNAT: preinitialize values for ipv6_find_hdr
+- TARPIT: fix memory leak when tarpit_generic() fails
 
 
 v1.45 (2012-07-16)
index 58f12e4b5346a7a7f61c4f286d4cdaa841ee7a75..0e66279ca61b1491bae8ee6ca1f9ac0c8dbcde42 100644 (file)
@@ -237,7 +237,7 @@ static void tarpit_tcp4(struct sk_buff *oldskb, unsigned int hook,
        ((u_int8_t *)tcph)[13] = 0;
 
        if (!tarpit_generic(tcph, oth, payload, mode))
-               return;
+               goto free_nskb;
 
        /* Adjust TCP checksum */
        tcph->check = 0;
@@ -398,7 +398,7 @@ static void tarpit_tcp6(struct sk_buff *oldskb, unsigned int hook,
 
        payload = nskb->len - sizeof(struct ipv6hdr) - sizeof(struct tcphdr);
        if (!tarpit_generic(&oth, tcph, payload, mode))
-               return;
+               goto free_nskb;
 
        ip6h->payload_len = htons(sizeof(struct tcphdr));
        tcph->check = 0;