calipso: fix resource leak on calipso_genopt failure
authorColin Ian King <colin.king@canonical.com>
Thu, 11 Aug 2016 17:17:22 +0000 (18:17 +0100)
committerDavid S. Miller <davem@davemloft.net>
Sat, 13 Aug 2016 21:56:17 +0000 (14:56 -0700)
Currently, if calipso_genopt fails then the error exit path
does not free the ipv6_opt_hdr new causing a memory leak. Fix
this by kfree'ing new on the error exit path.

Signed-off-by: Colin Ian King <colin.king@canonical.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv6/calipso.c

index c53b92c617c545c041d50a4e458e0533d93a59df..37ac9de713c69af30ae50d03e53ee472a7520b98 100644 (file)
@@ -952,8 +952,10 @@ calipso_opt_insert(struct ipv6_opt_hdr *hop,
                memcpy(new, hop, start);
        ret_val = calipso_genopt((unsigned char *)new, start, buf_len, doi_def,
                                 secattr);
-       if (ret_val < 0)
+       if (ret_val < 0) {
+               kfree(new);
                return ERR_PTR(ret_val);
+       }
 
        buf_len = start + ret_val;
        /* At this point buf_len aligns to 4n, so (buf_len & 4) pads to 8n */