Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1734379 > unrolled thread

[PATCH] KEYS: fix cred refcount leak in request_key_auth_new()

Started byEric Biggers <ebiggers3@gmail.com>
First post2017-09-18 20:40 +0200
Last post2017-09-21 22:40 +0200
Articles 3 — 2 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH] KEYS: fix cred refcount leak in request_key_auth_new() Eric Biggers <ebiggers3@gmail.com> - 2017-09-18 20:40 +0200
    Re: [PATCH] KEYS: fix cred refcount leak in request_key_auth_new() David Howells <dhowells@redhat.com> - 2017-09-19 17:50 +0200
      Re: [PATCH] KEYS: fix cred refcount leak in request_key_auth_new() Eric Biggers <ebiggers3@gmail.com> - 2017-09-21 22:40 +0200

#1734379 — [PATCH] KEYS: fix cred refcount leak in request_key_auth_new()

FromEric Biggers <ebiggers3@gmail.com>
Date2017-09-18 20:40 +0200
Subject[PATCH] KEYS: fix cred refcount leak in request_key_auth_new()
Message-ID<ur97A-1vB-27@gated-at.bofh.it>
From: Eric Biggers <ebiggers@google.com>

In request_key_auth_new(), if alloc_key() or key_instantiate_and_link()
were to fail, we would leak a reference to the 'struct cred'.  Currently
this can only happen if alloc_key() fails to to allocate memory.  But it
still should be fixed, as it is a more severe bug waiting to happen.

Fixes: d84f4f992cbd ("CRED: Inaugurate COW credentials")
Signed-off-by: Eric Biggers <ebiggers@google.com>
---
 security/keys/request_key_auth.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/security/keys/request_key_auth.c b/security/keys/request_key_auth.c
index afe9d22ab361..f2f29f13ecff 100644
--- a/security/keys/request_key_auth.c
+++ b/security/keys/request_key_auth.c
@@ -227,6 +227,7 @@ struct key *request_key_auth_new(struct key *target, const void *callout_info,
 	key_revoke(authkey);
 	key_put(authkey);
 error_alloc:
+	put_cred(rka->cred);
 	key_put(rka->target_key);
 	key_put(rka->dest_keyring);
 	kfree(rka->callout_info);
-- 
2.14.1.690.gbb1197296e-goog

[toc] | [next] | [standalone]


#1735023

FromDavid Howells <dhowells@redhat.com>
Date2017-09-19 17:50 +0200
Message-ID<ursWB-7h8-5@gated-at.bofh.it>
In reply to#1734379
Eric Biggers <ebiggers3@gmail.com> wrote:

> In request_key_auth_new(), if alloc_key() or key_instantiate_and_link()
> were to fail, we would leak a reference to the 'struct cred'.  Currently
> this can only happen if alloc_key() fails to to allocate memory.  But it
> still should be fixed, as it is a more severe bug waiting to happen.

It might be better to combine request_key_auth_destroy() and the error path
that you're altering in request_key_auth_new() by pulling it into a separate
function.

David

[toc] | [prev] | [next] | [standalone]


#1737055

FromEric Biggers <ebiggers3@gmail.com>
Date2017-09-21 22:40 +0200
Message-ID<usgql-5CD-5@gated-at.bofh.it>
In reply to#1735023
On Tue, Sep 19, 2017 at 04:46:08PM +0100, David Howells wrote:
> Eric Biggers <ebiggers3@gmail.com> wrote:
> 
> > In request_key_auth_new(), if alloc_key() or key_instantiate_and_link()
> > were to fail, we would leak a reference to the 'struct cred'.  Currently
> > this can only happen if alloc_key() fails to to allocate memory.  But it
> > still should be fixed, as it is a more severe bug waiting to happen.
> 
> It might be better to combine request_key_auth_destroy() and the error path
> that you're altering in request_key_auth_new() by pulling it into a separate
> function.
> 
> David

Agreed, I'll do that.

Eric

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web