]> err.no Git - linux-2.6/commitdiff
[PATCH] Keys: Fix permissions check for update vs add
authorDavid Howells <dhowells@redhat.com>
Thu, 1 Dec 2005 08:51:18 +0000 (00:51 -0800)
committerLinus Torvalds <torvalds@g5.osdl.org>
Thu, 1 Dec 2005 23:48:56 +0000 (15:48 -0800)
Permit add_key() to once again update a matching key rather than adding a
new one if a matching key already exists in the target keyring.

This bug causes add_key() to always add a new key, displacing the old from
the target keyring.

Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
security/keys/keyring.c

index c7a0ab1cfda35aacd868504c3033417c58c9e9e7..4e9fa8be44b8e7071c75cb9f03ea5c2cb6d819bd 100644 (file)
@@ -526,7 +526,7 @@ key_ref_t __keyring_search_one(key_ref_t keyring_ref,
                            (!key->type->match ||
                             key->type->match(key, description)) &&
                            key_permission(make_key_ref(key, possessed),
-                                          perm) < 0 &&
+                                          perm) == 0 &&
                            !test_bit(KEY_FLAG_REVOKED, &key->flags)
                            )
                                goto found;