KEYS: Drop the permissions argument from __keyring_search_one()
authorDavid Howells <dhowells@redhat.com>
Tue, 24 Sep 2013 09:35:17 +0000 (10:35 +0100)
committerDavid Howells <dhowells@redhat.com>
Tue, 24 Sep 2013 09:35:17 +0000 (10:35 +0100)
Drop the permissions argument from __keyring_search_one() as the only caller
passes 0 here - which causes all checks to be skipped.

Signed-off-by: David Howells <dhowells@redhat.com>
security/keys/internal.h
security/keys/key.c
security/keys/keyring.c

index f4bf938..73950bf 100644 (file)
@@ -99,8 +99,7 @@ extern void __key_link_end(struct key *keyring,
                           unsigned long prealloc);
 
 extern key_ref_t __keyring_search_one(key_ref_t keyring_ref,
-                                     const struct keyring_index_key *index_key,
-                                     key_perm_t perm);
+                                     const struct keyring_index_key *index_key);
 
 extern struct key *keyring_search_instkey(struct key *keyring,
                                          key_serial_t target_id);
index 1e23cc2..7d716b8 100644 (file)
@@ -847,7 +847,7 @@ key_ref_t key_create_or_update(key_ref_t keyring_ref,
         * update that instead if possible
         */
        if (index_key.type->update) {
-               key_ref = __keyring_search_one(keyring_ref, &index_key, 0);
+               key_ref = __keyring_search_one(keyring_ref, &index_key);
                if (!IS_ERR(key_ref))
                        goto found_matching_key;
        }
index 87eff32..eeef1a0 100644 (file)
@@ -531,15 +531,14 @@ EXPORT_SYMBOL(keyring_search);
  * RCU is used to make it unnecessary to lock the keyring key list here.
  *
  * Returns a pointer to the found key with usage count incremented if
- * successful and returns -ENOKEY if not found.  Revoked keys and keys not
- * providing the requested permission are skipped over.
+ * successful and returns -ENOKEY if not found.  Revoked and invalidated keys
+ * are skipped over.
  *
  * If successful, the possession indicator is propagated from the keyring ref
  * to the returned key reference.
  */
 key_ref_t __keyring_search_one(key_ref_t keyring_ref,
-                              const struct keyring_index_key *index_key,
-                              key_perm_t perm)
+                              const struct keyring_index_key *index_key)
 {
        struct keyring_list *klist;
        struct key *keyring, *key;
@@ -560,8 +559,6 @@ key_ref_t __keyring_search_one(key_ref_t keyring_ref,
                        if (key->type == index_key->type &&
                            (!key->type->match ||
                             key->type->match(key, index_key->description)) &&
-                           key_permission(make_key_ref(key, possessed),
-                                          perm) == 0 &&
                            !(key->flags & ((1 << KEY_FLAG_INVALIDATED) |
                                            (1 << KEY_FLAG_REVOKED)))
                            )