diff options
| author | Jeff Garzik <jgarzik@pobox.com> | 2005-10-04 10:16:31 -0400 |
|---|---|---|
| committer | Jeff Garzik <jgarzik@pobox.com> | 2005-10-04 10:16:31 -0400 |
| commit | 2ee73cc2d507df7b28050fba5d08bd33dd34848c (patch) | |
| tree | af5f33b265318e0f4b61f788691fe4f780ec402c /include/linux/key-ui.h | |
| parent | c1d9728ecc5b560465df3c0c0d3b3825c2710b40 (diff) | |
| parent | ed39f731ab2e77e58122232f6e27333331d7793d (diff) | |
Merge /spare/repo/linux-2.6/
Diffstat (limited to 'include/linux/key-ui.h')
| -rw-r--r-- | include/linux/key-ui.h | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/include/linux/key-ui.h b/include/linux/key-ui.h index cc326174a808..918c34a8347e 100644 --- a/include/linux/key-ui.h +++ b/include/linux/key-ui.h | |||
| @@ -42,11 +42,14 @@ struct keyring_list { | |||
| 42 | /* | 42 | /* |
| 43 | * check to see whether permission is granted to use a key in the desired way | 43 | * check to see whether permission is granted to use a key in the desired way |
| 44 | */ | 44 | */ |
| 45 | static inline int key_permission(const struct key *key, key_perm_t perm) | 45 | static inline int key_permission(const key_ref_t key_ref, key_perm_t perm) |
| 46 | { | 46 | { |
| 47 | struct key *key = key_ref_to_ptr(key_ref); | ||
| 47 | key_perm_t kperm; | 48 | key_perm_t kperm; |
| 48 | 49 | ||
| 49 | if (key->uid == current->fsuid) | 50 | if (is_key_possessed(key_ref)) |
| 51 | kperm = key->perm >> 24; | ||
| 52 | else if (key->uid == current->fsuid) | ||
| 50 | kperm = key->perm >> 16; | 53 | kperm = key->perm >> 16; |
| 51 | else if (key->gid != -1 && | 54 | else if (key->gid != -1 && |
| 52 | key->perm & KEY_GRP_ALL && | 55 | key->perm & KEY_GRP_ALL && |
| @@ -65,11 +68,14 @@ static inline int key_permission(const struct key *key, key_perm_t perm) | |||
| 65 | * check to see whether permission is granted to use a key in at least one of | 68 | * check to see whether permission is granted to use a key in at least one of |
| 66 | * the desired ways | 69 | * the desired ways |
| 67 | */ | 70 | */ |
| 68 | static inline int key_any_permission(const struct key *key, key_perm_t perm) | 71 | static inline int key_any_permission(const key_ref_t key_ref, key_perm_t perm) |
| 69 | { | 72 | { |
| 73 | struct key *key = key_ref_to_ptr(key_ref); | ||
| 70 | key_perm_t kperm; | 74 | key_perm_t kperm; |
| 71 | 75 | ||
| 72 | if (key->uid == current->fsuid) | 76 | if (is_key_possessed(key_ref)) |
| 77 | kperm = key->perm >> 24; | ||
| 78 | else if (key->uid == current->fsuid) | ||
| 73 | kperm = key->perm >> 16; | 79 | kperm = key->perm >> 16; |
| 74 | else if (key->gid != -1 && | 80 | else if (key->gid != -1 && |
| 75 | key->perm & KEY_GRP_ALL && | 81 | key->perm & KEY_GRP_ALL && |
| @@ -94,13 +100,17 @@ static inline int key_task_groups_search(struct task_struct *tsk, gid_t gid) | |||
| 94 | return ret; | 100 | return ret; |
| 95 | } | 101 | } |
| 96 | 102 | ||
| 97 | static inline int key_task_permission(const struct key *key, | 103 | static inline int key_task_permission(const key_ref_t key_ref, |
| 98 | struct task_struct *context, | 104 | struct task_struct *context, |
| 99 | key_perm_t perm) | 105 | key_perm_t perm) |
| 100 | { | 106 | { |
| 107 | struct key *key = key_ref_to_ptr(key_ref); | ||
| 101 | key_perm_t kperm; | 108 | key_perm_t kperm; |
| 102 | 109 | ||
| 103 | if (key->uid == context->fsuid) { | 110 | if (is_key_possessed(key_ref)) { |
| 111 | kperm = key->perm >> 24; | ||
| 112 | } | ||
| 113 | else if (key->uid == context->fsuid) { | ||
| 104 | kperm = key->perm >> 16; | 114 | kperm = key->perm >> 16; |
| 105 | } | 115 | } |
| 106 | else if (key->gid != -1 && | 116 | else if (key->gid != -1 && |
| @@ -121,9 +131,9 @@ static inline int key_task_permission(const struct key *key, | |||
| 121 | 131 | ||
| 122 | } | 132 | } |
| 123 | 133 | ||
| 124 | extern struct key *lookup_user_key(struct task_struct *context, | 134 | extern key_ref_t lookup_user_key(struct task_struct *context, |
| 125 | key_serial_t id, int create, int partial, | 135 | key_serial_t id, int create, int partial, |
| 126 | key_perm_t perm); | 136 | key_perm_t perm); |
| 127 | 137 | ||
| 128 | extern long join_session_keyring(const char *name); | 138 | extern long join_session_keyring(const char *name); |
| 129 | 139 | ||
