aboutsummaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2017-01-28 18:43:52 +0100
committerDmitry Vyukov <dvyukov@google.com>2017-01-28 18:43:52 +0100
commitcaef676b0afb2348f19cfddd9b31ee356cf9e2f6 (patch)
treeecab06a020fab6fb5cd23bb965f673b3df38742d /sys
parent6f722a03489c545bc872d18ff5783839732e4ccd (diff)
sys: improve key descriptions
Diffstat (limited to 'sys')
-rw-r--r--sys/key.txt25
-rw-r--r--sys/key_amd64.const25
-rw-r--r--sys/key_arm64.const25
-rw-r--r--sys/key_ppc64le.const25
4 files changed, 94 insertions, 6 deletions
diff --git a/sys/key.txt b/sys/key.txt
index c0b18f5e8..85476e322 100644
--- a/sys/key.txt
+++ b/sys/key.txt
@@ -1,26 +1,27 @@
# Copyright 2015 syzkaller project authors. All rights reserved.
# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
+include <linux/key.h>
include <linux/keyctl.h>
include <uapi/linux/keyctl.h>
-resource key[int32]: KEY_SPEC_THREAD_KEYRING, KEY_SPEC_PROCESS_KEYRING, KEY_SPEC_SESSION_KEYRING, KEY_SPEC_USER_KEYRING, KEY_SPEC_USER_SESSION_KEYRING, KEY_SPEC_GROUP_KEYRING, KEY_SPEC_REQKEY_AUTH_KEY, KEY_SPEC_REQUESTOR_KEYRING
+resource key[int32]: 0, KEY_SPEC_THREAD_KEYRING, KEY_SPEC_PROCESS_KEYRING, KEY_SPEC_SESSION_KEYRING, KEY_SPEC_USER_KEYRING, KEY_SPEC_USER_SESSION_KEYRING, KEY_SPEC_GROUP_KEYRING, KEY_SPEC_REQKEY_AUTH_KEY, KEY_SPEC_REQUESTOR_KEYRING
-add_key(type ptr[in, string], desc ptr[in, string], payload buffer[in, opt], paylen len[payload], keyring flags[keyring_type]) key
-request_key(type ptr[in, string], desc ptr[in, string], callout ptr[in, string], keyring flags[keyring_type]) key
+add_key(type ptr[in, string[key_type]], desc ptr[in, key_desc], payload buffer[in, opt], paylen len[payload], keyring flags[keyring_type]) key
+request_key(type ptr[in, string[key_type]], desc ptr[in, key_desc], callout ptr[in, string], keyring flags[keyring_type]) key
keyctl$get_keyring_id(code const[KEYCTL_GET_KEYRING_ID], key key, create intptr)
-keyctl$join(code const[KEYCTL_JOIN_SESSION_KEYRING], session ptr[in, string])
+keyctl$join(code const[KEYCTL_JOIN_SESSION_KEYRING], session ptr[in, key_desc, opt])
keyctl$update(code const[KEYCTL_UPDATE], key key, payload buffer[in, opt], paylen len[payload])
keyctl$revoke(code const[KEYCTL_REVOKE], key key)
keyctl$describe(code const[KEYCTL_DESCRIBE], key key, desc buffer[out], len len[desc])
keyctl$clear(code const[KEYCTL_CLEAR], key key)
keyctl$link(code const[KEYCTL_LINK], key1 key, key2 key)
keyctl$unlink(code const[KEYCTL_UNLINK], key1 key, key2 key)
-keyctl$search(code const[KEYCTL_SEARCH], key key, type ptr[in, string], desc ptr[in, string], ring key)
+keyctl$search(code const[KEYCTL_SEARCH], key key, type ptr[in, string[key_type]], desc ptr[in, key_desc], ring key)
keyctl$read(code const[KEYCTL_READ], key key, payload buffer[out], len len[payload])
keyctl$chown(code const[KEYCTL_CHOWN], key key, uid uid, gid gid)
# perm is a mask of KEY_POS_VIEW, etc consants, but they cover almost whole int32.
-keyctl$setperm(code const[KEYCTL_SETPERM], key key, perm int32)
+keyctl$setperm(code const[KEYCTL_SETPERM], key key, perm flags[key_perm])
keyctl$instantiate(code const[KEYCTL_INSTANTIATE], key key, payload buffer[in, opt], paylen len[payload], ring key)
keyctl$negate(code const[KEYCTL_NEGATE], key key, timeout intptr, ring key)
keyctl$set_reqkey_keyring(code const[KEYCTL_SET_REQKEY_KEYRING], reqkey flags[reqkey_keyring])
@@ -35,3 +36,15 @@ keyctl$get_persistent(code const[KEYCTL_GET_PERSISTENT], uid uid, key key)
keyring_type = KEY_SPEC_THREAD_KEYRING, KEY_SPEC_PROCESS_KEYRING, KEY_SPEC_SESSION_KEYRING, KEY_SPEC_USER_KEYRING, KEY_SPEC_USER_SESSION_KEYRING, KEY_SPEC_GROUP_KEYRING, KEY_SPEC_REQKEY_AUTH_KEY, KEY_SPEC_REQUESTOR_KEYRING
reqkey_keyring = KEY_REQKEY_DEFL_NO_CHANGE, KEY_REQKEY_DEFL_DEFAULT, KEY_REQKEY_DEFL_THREAD_KEYRING, KEY_REQKEY_DEFL_PROCESS_KEYRING, KEY_REQKEY_DEFL_SESSION_KEYRING, KEY_REQKEY_DEFL_USER_KEYRING, KEY_REQKEY_DEFL_USER_SESSION_KEYRING, KEY_REQKEY_DEFL_GROUP_KEYRING, KEY_REQKEY_DEFL_REQUESTOR_KEYRING
+key_perm = KEY_POS_VIEW, KEY_POS_READ, KEY_POS_WRITE, KEY_POS_SEARCH, KEY_POS_LINK, KEY_POS_SETATTR, KEY_USR_VIEW, KEY_USR_READ, KEY_USR_WRITE, KEY_USR_SEARCH, KEY_USR_LINK, KEY_USR_SETATTR, KEY_GRP_VIEW, KEY_GRP_READ, KEY_GRP_WRITE, KEY_GRP_SEARCH, KEY_GRP_LINK, KEY_GRP_SETATTR, KEY_OTH_VIEW, KEY_OTH_READ, KEY_OTH_WRITE, KEY_OTH_SEARCH, KEY_OTH_LINK, KEY_OTH_SETATTR, KEY_PERM_UNDEF
+
+key_type = "user", "keyring", "logon", "trusted", "big_key", "dead", ".request_key_auth", "syzkaller"
+
+# "syzP\x00"
+key_desc {
+ name0 const[115, int8]
+ name1 const[121, int8]
+ name2 const[122, int8]
+ name3 proc[int8, 32, 4]
+ name4 const[0, int8]
+}
diff --git a/sys/key_amd64.const b/sys/key_amd64.const
index c12d05a2c..ca9e0c343 100644
--- a/sys/key_amd64.const
+++ b/sys/key_amd64.const
@@ -22,6 +22,25 @@ KEYCTL_SET_REQKEY_KEYRING = 14
KEYCTL_SET_TIMEOUT = 15
KEYCTL_UNLINK = 9
KEYCTL_UPDATE = 2
+KEY_GRP_LINK = 4096
+KEY_GRP_READ = 512
+KEY_GRP_SEARCH = 2048
+KEY_GRP_SETATTR = 8192
+KEY_GRP_VIEW = 256
+KEY_GRP_WRITE = 1024
+KEY_OTH_LINK = 16
+KEY_OTH_READ = 2
+KEY_OTH_SEARCH = 8
+KEY_OTH_SETATTR = 32
+KEY_OTH_VIEW = 1
+KEY_OTH_WRITE = 4
+KEY_PERM_UNDEF = 4294967295
+KEY_POS_LINK = 268435456
+KEY_POS_READ = 33554432
+KEY_POS_SEARCH = 134217728
+KEY_POS_SETATTR = 536870912
+KEY_POS_VIEW = 16777216
+KEY_POS_WRITE = 67108864
KEY_REQKEY_DEFL_DEFAULT = 0
KEY_REQKEY_DEFL_GROUP_KEYRING = 6
KEY_REQKEY_DEFL_NO_CHANGE = 18446744073709551615
@@ -39,6 +58,12 @@ KEY_SPEC_SESSION_KEYRING = 18446744073709551613
KEY_SPEC_THREAD_KEYRING = 18446744073709551615
KEY_SPEC_USER_KEYRING = 18446744073709551612
KEY_SPEC_USER_SESSION_KEYRING = 18446744073709551611
+KEY_USR_LINK = 1048576
+KEY_USR_READ = 131072
+KEY_USR_SEARCH = 524288
+KEY_USR_SETATTR = 2097152
+KEY_USR_VIEW = 65536
+KEY_USR_WRITE = 262144
__NR_add_key = 248
__NR_keyctl = 250
__NR_request_key = 249
diff --git a/sys/key_arm64.const b/sys/key_arm64.const
index 941595809..45c4026f1 100644
--- a/sys/key_arm64.const
+++ b/sys/key_arm64.const
@@ -22,6 +22,25 @@ KEYCTL_SET_REQKEY_KEYRING = 14
KEYCTL_SET_TIMEOUT = 15
KEYCTL_UNLINK = 9
KEYCTL_UPDATE = 2
+KEY_GRP_LINK = 4096
+KEY_GRP_READ = 512
+KEY_GRP_SEARCH = 2048
+KEY_GRP_SETATTR = 8192
+KEY_GRP_VIEW = 256
+KEY_GRP_WRITE = 1024
+KEY_OTH_LINK = 16
+KEY_OTH_READ = 2
+KEY_OTH_SEARCH = 8
+KEY_OTH_SETATTR = 32
+KEY_OTH_VIEW = 1
+KEY_OTH_WRITE = 4
+KEY_PERM_UNDEF = 4294967295
+KEY_POS_LINK = 268435456
+KEY_POS_READ = 33554432
+KEY_POS_SEARCH = 134217728
+KEY_POS_SETATTR = 536870912
+KEY_POS_VIEW = 16777216
+KEY_POS_WRITE = 67108864
KEY_REQKEY_DEFL_DEFAULT = 0
KEY_REQKEY_DEFL_GROUP_KEYRING = 6
KEY_REQKEY_DEFL_NO_CHANGE = 18446744073709551615
@@ -39,6 +58,12 @@ KEY_SPEC_SESSION_KEYRING = 18446744073709551613
KEY_SPEC_THREAD_KEYRING = 18446744073709551615
KEY_SPEC_USER_KEYRING = 18446744073709551612
KEY_SPEC_USER_SESSION_KEYRING = 18446744073709551611
+KEY_USR_LINK = 1048576
+KEY_USR_READ = 131072
+KEY_USR_SEARCH = 524288
+KEY_USR_SETATTR = 2097152
+KEY_USR_VIEW = 65536
+KEY_USR_WRITE = 262144
__NR_add_key = 217
__NR_keyctl = 219
__NR_request_key = 218
diff --git a/sys/key_ppc64le.const b/sys/key_ppc64le.const
index d03d03eb4..dff76de01 100644
--- a/sys/key_ppc64le.const
+++ b/sys/key_ppc64le.const
@@ -22,6 +22,25 @@ KEYCTL_SET_REQKEY_KEYRING = 14
KEYCTL_SET_TIMEOUT = 15
KEYCTL_UNLINK = 9
KEYCTL_UPDATE = 2
+KEY_GRP_LINK = 4096
+KEY_GRP_READ = 512
+KEY_GRP_SEARCH = 2048
+KEY_GRP_SETATTR = 8192
+KEY_GRP_VIEW = 256
+KEY_GRP_WRITE = 1024
+KEY_OTH_LINK = 16
+KEY_OTH_READ = 2
+KEY_OTH_SEARCH = 8
+KEY_OTH_SETATTR = 32
+KEY_OTH_VIEW = 1
+KEY_OTH_WRITE = 4
+KEY_PERM_UNDEF = 4294967295
+KEY_POS_LINK = 268435456
+KEY_POS_READ = 33554432
+KEY_POS_SEARCH = 134217728
+KEY_POS_SETATTR = 536870912
+KEY_POS_VIEW = 16777216
+KEY_POS_WRITE = 67108864
KEY_REQKEY_DEFL_DEFAULT = 0
KEY_REQKEY_DEFL_GROUP_KEYRING = 6
KEY_REQKEY_DEFL_NO_CHANGE = 18446744073709551615
@@ -39,6 +58,12 @@ KEY_SPEC_SESSION_KEYRING = 18446744073709551613
KEY_SPEC_THREAD_KEYRING = 18446744073709551615
KEY_SPEC_USER_KEYRING = 18446744073709551612
KEY_SPEC_USER_SESSION_KEYRING = 18446744073709551611
+KEY_USR_LINK = 1048576
+KEY_USR_READ = 131072
+KEY_USR_SEARCH = 524288
+KEY_USR_SETATTR = 2097152
+KEY_USR_VIEW = 65536
+KEY_USR_WRITE = 262144
__NR_add_key = 269
__NR_keyctl = 271
__NR_request_key = 270