selinux: fix possible memory leak
authorGeyslan G. Bem <geyslan@gmail.com>
Sun, 24 Nov 2013 11:37:01 +0000 (08:37 -0300)
committerPaul Moore <pmoore@redhat.com>
Mon, 25 Nov 2013 22:00:33 +0000 (17:00 -0500)
Free 'ctx_str' when necessary.

Signed-off-by: Geyslan G. Bem <geyslan@gmail.com>
Cc: stable@vger.kernel.org
Signed-off-by: Paul Moore <pmoore@redhat.com>
security/selinux/xfrm.c

index a91d205ec0c6094cc9a0fecb5d427d4d24b1ed9a..cf79a4564e389903cb6bc96682fe8ac28bbe4470 100644 (file)
@@ -327,19 +327,22 @@ int selinux_xfrm_state_alloc_acquire(struct xfrm_state *x,
                return rc;
 
        ctx = kmalloc(sizeof(*ctx) + str_len, GFP_ATOMIC);
-       if (!ctx)
-               return -ENOMEM;
+       if (!ctx) {
+               rc = -ENOMEM;
+               goto out;
+       }
 
        ctx->ctx_doi = XFRM_SC_DOI_LSM;
        ctx->ctx_alg = XFRM_SC_ALG_SELINUX;
        ctx->ctx_sid = secid;
        ctx->ctx_len = str_len;
        memcpy(ctx->ctx_str, ctx_str, str_len);
-       kfree(ctx_str);
 
        x->security = ctx;
        atomic_inc(&selinux_xfrm_refcount);
-       return 0;
+out:
+       kfree(ctx_str);
+       return rc;
 }
 
 /*