* [LTP] [PATCH 1/2] syscalls/add_key05: add new test for the length of payload @ 2020-01-19 7:49 Yang Xu 2020-01-19 7:49 ` [LTP] [PATCH 2/2] syscalls/add_key01: remove duplicated case Yang Xu 2020-01-21 15:13 ` [LTP] [PATCH 1/2] syscalls/add_key05: add new test for the length of payload Cyril Hrubis 0 siblings, 2 replies; 10+ messages in thread From: Yang Xu @ 2020-01-19 7:49 UTC (permalink / raw) To: ltp Seeing add_key manpages, the lenth of payload for "user"/"logon" is 32767, this value is up tp 1M for "big_key". For "keyring" type , this value is zero. Signed-off-by: Yang Xu <xuyang2018.jy@cn.fujitsu.com> --- runtest/syscalls | 1 + testcases/kernel/syscalls/add_key/.gitignore | 1 + testcases/kernel/syscalls/add_key/add_key05.c | 99 +++++++++++++++++++ 3 files changed, 101 insertions(+) create mode 100644 testcases/kernel/syscalls/add_key/add_key05.c diff --git a/runtest/syscalls b/runtest/syscalls index f58fefe17..830dfc8b7 100644 --- a/runtest/syscalls +++ b/runtest/syscalls @@ -18,6 +18,7 @@ add_key01 add_key01 add_key02 add_key02 add_key03 add_key03 add_key04 add_key04 +add_key05 add_key05 adjtimex01 adjtimex01 adjtimex02 adjtimex02 diff --git a/testcases/kernel/syscalls/add_key/.gitignore b/testcases/kernel/syscalls/add_key/.gitignore index b9a04214d..f57dc2228 100644 --- a/testcases/kernel/syscalls/add_key/.gitignore +++ b/testcases/kernel/syscalls/add_key/.gitignore @@ -2,3 +2,4 @@ /add_key02 /add_key03 /add_key04 +/add_key05 diff --git a/testcases/kernel/syscalls/add_key/add_key05.c b/testcases/kernel/syscalls/add_key/add_key05.c new file mode 100644 index 000000000..a6d4c1a02 --- /dev/null +++ b/testcases/kernel/syscalls/add_key/add_key05.c @@ -0,0 +1,99 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Copyright (c) 2020 FUJITSU LIMITED. All rights reserved. + * Author: Yang Xu <xuyang2018.jy@cn.fujitsu.com> + * + * This case test various key type can support how many long + * bytes payload. + * keyring: 0 bytes + * user/logon: 32767 bytes + * big_key: 1M -1byte + */ + +#include <errno.h> +#include "tst_test.h" +#include "lapi/keyctl.h" + +struct tcase { + const char *type; + const char *desc; + size_t plen; + int pass_flag; + char *message; +} tcases[] = { + {"keyring", "abc", 0, 1, + "The key type is keyrings and plen is 0"}, + + {"keyring", "bcd", 1, 0, + "the key type is keyrings and plen is 1"}, + + {"user", "cde", 32767, 1, + "The key type is user and plen is 32767"}, + + {"user", "def", 32768, 0, + "The key type is user and plen is 32768"}, + + {"logon", "ef:g", 32767, 1, + "The key type is logon and plen is 32767"}, + + {"logon", "fg:h", 32768, 0, + "The key type is logon and plen is 32768"}, + + {"big_key", "ghi", (1 << 20) - 1, 1, + "The key type is big_key and plen is 1048575"}, + + {"big_key", "hij", 1 << 20, 0, + "The key type is big_key and plen is 1048576"}, +}; + +static char *buf; +static unsigned int logon_nsup, big_key_nsup; + +static void verify_add_key(unsigned int n) +{ + struct tcase *tc = &tcases[n]; + + tst_res(TINFO, "%s", tc->message); + + if (!strcmp(tc->type, "logon") && logon_nsup) { + tst_res(TINFO, + "current system doesn't support logon key type, skip it"); + return; + } + if (!strcmp(tc->type, "big_key") && big_key_nsup) { + tst_res(TINFO, + "current system doesn't support big_key key type, skip it"); + return; + } + + TEST(add_key(tc->type, tc->desc, buf, tc->plen, KEY_SPEC_THREAD_KEYRING)); + if (TST_RET == -1) { + if (TST_ERR == EINVAL) + tst_res(tc->pass_flag ? TFAIL : TPASS, "add_key call failed as expected"); + else + tst_res(TFAIL | TTERRNO, "add_key call failed expected EINVAL but got"); + return; + } + tst_res(tc->pass_flag ? TPASS : TFAIL, "add_key call succeeded"); +} + +static void setup(void) +{ + TEST(add_key("logon", "test:sup_logon", buf, 64, KEY_SPEC_THREAD_KEYRING)); + if (TST_RET == -1) + logon_nsup = 1; + + TEST(add_key("big_key", "sup_big_key", buf, 64, KEY_SPEC_THREAD_KEYRING)); + if (TST_RET == -1) + big_key_nsup = 1; +} + +static struct tst_test test = { + .setup = setup, + .tcnt = ARRAY_SIZE(tcases), + .test = verify_add_key, + .bufs = (struct tst_buffers []) { + {&buf, .size = 1 << 20}, + {} + } +}; -- 2.18.0 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [LTP] [PATCH 2/2] syscalls/add_key01: remove duplicated case 2020-01-19 7:49 [LTP] [PATCH 1/2] syscalls/add_key05: add new test for the length of payload Yang Xu @ 2020-01-19 7:49 ` Yang Xu 2020-01-21 14:50 ` Cyril Hrubis 2020-01-21 15:13 ` [LTP] [PATCH 1/2] syscalls/add_key05: add new test for the length of payload Cyril Hrubis 1 sibling, 1 reply; 10+ messages in thread From: Yang Xu @ 2020-01-19 7:49 UTC (permalink / raw) To: ltp Since add_key05.c has covered this test point, remove it. Signed-off-by: Yang Xu <xuyang2018.jy@cn.fujitsu.com> --- runtest/syscalls | 1 - testcases/kernel/syscalls/add_key/.gitignore | 1 - testcases/kernel/syscalls/add_key/add_key01.c | 26 ------------------- 3 files changed, 28 deletions(-) delete mode 100644 testcases/kernel/syscalls/add_key/add_key01.c diff --git a/runtest/syscalls b/runtest/syscalls index 830dfc8b7..04db95cf5 100644 --- a/runtest/syscalls +++ b/runtest/syscalls @@ -14,7 +14,6 @@ access04 access04 acct01 acct01 acct02 acct02 -add_key01 add_key01 add_key02 add_key02 add_key03 add_key03 add_key04 add_key04 diff --git a/testcases/kernel/syscalls/add_key/.gitignore b/testcases/kernel/syscalls/add_key/.gitignore index f57dc2228..49acda06b 100644 --- a/testcases/kernel/syscalls/add_key/.gitignore +++ b/testcases/kernel/syscalls/add_key/.gitignore @@ -1,4 +1,3 @@ -/add_key01 /add_key02 /add_key03 /add_key04 diff --git a/testcases/kernel/syscalls/add_key/add_key01.c b/testcases/kernel/syscalls/add_key/add_key01.c deleted file mode 100644 index 4fe97dac6..000000000 --- a/testcases/kernel/syscalls/add_key/add_key01.c +++ /dev/null @@ -1,26 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-or-later -/* - * Copyright (c) Crackerjack Project., 2007 - * Porting from Crackerjack to LTP is done by - * Manas Kumar Nayak maknayak@in.ibm.com> - * - * Basic test for the add_key() syscall. - */ - -#include <errno.h> - -#include "tst_test.h" -#include "lapi/keyctl.h" - -static void verify_add_key(void) -{ - TEST(add_key("keyring", "wjkey", NULL, 0, KEY_SPEC_THREAD_KEYRING)); - if (TST_RET == -1) - tst_res(TFAIL | TTERRNO, "add_key call failed"); - else - tst_res(TPASS, "add_key call succeeded"); -} - -static struct tst_test test = { - .test_all = verify_add_key, -}; -- 2.18.0 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [LTP] [PATCH 2/2] syscalls/add_key01: remove duplicated case 2020-01-19 7:49 ` [LTP] [PATCH 2/2] syscalls/add_key01: remove duplicated case Yang Xu @ 2020-01-21 14:50 ` Cyril Hrubis 0 siblings, 0 replies; 10+ messages in thread From: Cyril Hrubis @ 2020-01-21 14:50 UTC (permalink / raw) To: ltp Hi! Can't we just change the test instead of creating add_key05 then removing add_key01? -- Cyril Hrubis chrubis@suse.cz ^ permalink raw reply [flat|nested] 10+ messages in thread
* [LTP] [PATCH 1/2] syscalls/add_key05: add new test for the length of payload 2020-01-19 7:49 [LTP] [PATCH 1/2] syscalls/add_key05: add new test for the length of payload Yang Xu 2020-01-19 7:49 ` [LTP] [PATCH 2/2] syscalls/add_key01: remove duplicated case Yang Xu @ 2020-01-21 15:13 ` Cyril Hrubis 2020-01-22 1:51 ` Yang Xu 2020-01-22 5:26 ` [LTP] [PATCH v2] syscalls/add_key01: test " Yang Xu 1 sibling, 2 replies; 10+ messages in thread From: Cyril Hrubis @ 2020-01-21 15:13 UTC (permalink / raw) To: ltp Hi! > Seeing add_key manpages, the lenth of payload for "user"/"logon" > is 32767, this value is up tp 1M for "big_key". For "keyring" type > , this value is zero. > > Signed-off-by: Yang Xu <xuyang2018.jy@cn.fujitsu.com> > --- > runtest/syscalls | 1 + > testcases/kernel/syscalls/add_key/.gitignore | 1 + > testcases/kernel/syscalls/add_key/add_key05.c | 99 +++++++++++++++++++ > 3 files changed, 101 insertions(+) > create mode 100644 testcases/kernel/syscalls/add_key/add_key05.c > > diff --git a/runtest/syscalls b/runtest/syscalls > index f58fefe17..830dfc8b7 100644 > --- a/runtest/syscalls > +++ b/runtest/syscalls > @@ -18,6 +18,7 @@ add_key01 add_key01 > add_key02 add_key02 > add_key03 add_key03 > add_key04 add_key04 > +add_key05 add_key05 > > adjtimex01 adjtimex01 > adjtimex02 adjtimex02 > diff --git a/testcases/kernel/syscalls/add_key/.gitignore b/testcases/kernel/syscalls/add_key/.gitignore > index b9a04214d..f57dc2228 100644 > --- a/testcases/kernel/syscalls/add_key/.gitignore > +++ b/testcases/kernel/syscalls/add_key/.gitignore > @@ -2,3 +2,4 @@ > /add_key02 > /add_key03 > /add_key04 > +/add_key05 > diff --git a/testcases/kernel/syscalls/add_key/add_key05.c b/testcases/kernel/syscalls/add_key/add_key05.c > new file mode 100644 > index 000000000..a6d4c1a02 > --- /dev/null > +++ b/testcases/kernel/syscalls/add_key/add_key05.c > @@ -0,0 +1,99 @@ > +// SPDX-License-Identifier: GPL-2.0-or-later > +/* > + * Copyright (c) 2020 FUJITSU LIMITED. All rights reserved. > + * Author: Yang Xu <xuyang2018.jy@cn.fujitsu.com> > + * > + * This case test various key type can support how many long > + * bytes payload. > + * keyring: 0 bytes > + * user/logon: 32767 bytes > + * big_key: 1M -1byte > + */ > + > +#include <errno.h> > +#include "tst_test.h" > +#include "lapi/keyctl.h" > + > +struct tcase { > + const char *type; > + const char *desc; > + size_t plen; > + int pass_flag; > + char *message; > +} tcases[] = { > + {"keyring", "abc", 0, 1, > + "The key type is keyrings and plen is 0"}, > + > + {"keyring", "bcd", 1, 0, > + "the key type is keyrings and plen is 1"}, > + > + {"user", "cde", 32767, 1, > + "The key type is user and plen is 32767"}, > + > + {"user", "def", 32768, 0, > + "The key type is user and plen is 32768"}, > + > + {"logon", "ef:g", 32767, 1, > + "The key type is logon and plen is 32767"}, > + > + {"logon", "fg:h", 32768, 0, > + "The key type is logon and plen is 32768"}, > + > + {"big_key", "ghi", (1 << 20) - 1, 1, > + "The key type is big_key and plen is 1048575"}, > + > + {"big_key", "hij", 1 << 20, 0, > + "The key type is big_key and plen is 1048576"}, > +}; > + > +static char *buf; > +static unsigned int logon_nsup, big_key_nsup; > + > +static void verify_add_key(unsigned int n) > +{ > + struct tcase *tc = &tcases[n]; > + > + tst_res(TINFO, "%s", tc->message); > + > + if (!strcmp(tc->type, "logon") && logon_nsup) { > + tst_res(TINFO, > + "current system doesn't support logon key type, skip it"); This should be TCONF and the message could be much shorther and to the point, something as: tst_res(TCONF, "skipping unsupported logon key"); > + return; > + } > + > + if (!strcmp(tc->type, "big_key") && big_key_nsup) { > + tst_res(TINFO, > + "current system doesn't support big_key key type, skip it"); Here as well. > + return; > + } > + > + TEST(add_key(tc->type, tc->desc, buf, tc->plen, KEY_SPEC_THREAD_KEYRING)); > + if (TST_RET == -1) { > + if (TST_ERR == EINVAL) > + tst_res(tc->pass_flag ? TFAIL : TPASS, "add_key call failed as expected"); > + else > + tst_res(TFAIL | TTERRNO, "add_key call failed expected EINVAL but got"); This is a bit confusing, we may get the messages even in a case that the key is supposed to be successfully created, right? I guess that message "TFAIL: add_key call failed as expected" is not right. Can we separate the negative a positive messages so that they are less confusing? > + return; > + } > + tst_res(tc->pass_flag ? TPASS : TFAIL, "add_key call succeeded"); > +} > + > +static void setup(void) > +{ > + TEST(add_key("logon", "test:sup_logon", buf, 64, KEY_SPEC_THREAD_KEYRING)); > + if (TST_RET == -1) > + logon_nsup = 1; > + > + TEST(add_key("big_key", "sup_big_key", buf, 64, KEY_SPEC_THREAD_KEYRING)); > + if (TST_RET == -1) > + big_key_nsup = 1; > +} > + > +static struct tst_test test = { > + .setup = setup, > + .tcnt = ARRAY_SIZE(tcases), > + .test = verify_add_key, > + .bufs = (struct tst_buffers []) { > + {&buf, .size = 1 << 20}, We actually need different buffer for each different plen size, because the sole purpose of the buffer is to map a unaccessible page right after the end of the buffer to catch off-by-one accesses. > + {} > + } > +}; > -- > 2.18.0 > > > > > -- > Mailing list info: https://lists.linux.it/listinfo/ltp -- Cyril Hrubis chrubis@suse.cz ^ permalink raw reply [flat|nested] 10+ messages in thread
* [LTP] [PATCH 1/2] syscalls/add_key05: add new test for the length of payload 2020-01-21 15:13 ` [LTP] [PATCH 1/2] syscalls/add_key05: add new test for the length of payload Cyril Hrubis @ 2020-01-22 1:51 ` Yang Xu 2020-01-22 5:26 ` [LTP] [PATCH v2] syscalls/add_key01: test " Yang Xu 1 sibling, 0 replies; 10+ messages in thread From: Yang Xu @ 2020-01-22 1:51 UTC (permalink / raw) To: ltp Hi > Hi! >> Seeing add_key manpages, the lenth of payload for "user"/"logon" >> is 32767, this value is up tp 1M for "big_key". For "keyring" type >> , this value is zero. >> >> Signed-off-by: Yang Xu <xuyang2018.jy@cn.fujitsu.com> >> --- >> runtest/syscalls | 1 + >> testcases/kernel/syscalls/add_key/.gitignore | 1 + >> testcases/kernel/syscalls/add_key/add_key05.c | 99 +++++++++++++++++++ >> 3 files changed, 101 insertions(+) >> create mode 100644 testcases/kernel/syscalls/add_key/add_key05.c >> >> diff --git a/runtest/syscalls b/runtest/syscalls >> index f58fefe17..830dfc8b7 100644 >> --- a/runtest/syscalls >> +++ b/runtest/syscalls >> @@ -18,6 +18,7 @@ add_key01 add_key01 >> add_key02 add_key02 >> add_key03 add_key03 >> add_key04 add_key04 >> +add_key05 add_key05 >> >> adjtimex01 adjtimex01 >> adjtimex02 adjtimex02 >> diff --git a/testcases/kernel/syscalls/add_key/.gitignore b/testcases/kernel/syscalls/add_key/.gitignore >> index b9a04214d..f57dc2228 100644 >> --- a/testcases/kernel/syscalls/add_key/.gitignore >> +++ b/testcases/kernel/syscalls/add_key/.gitignore >> @@ -2,3 +2,4 @@ >> /add_key02 >> /add_key03 >> /add_key04 >> +/add_key05 >> diff --git a/testcases/kernel/syscalls/add_key/add_key05.c b/testcases/kernel/syscalls/add_key/add_key05.c >> new file mode 100644 >> index 000000000..a6d4c1a02 >> --- /dev/null >> +++ b/testcases/kernel/syscalls/add_key/add_key05.c >> @@ -0,0 +1,99 @@ >> +// SPDX-License-Identifier: GPL-2.0-or-later >> +/* >> + * Copyright (c) 2020 FUJITSU LIMITED. All rights reserved. >> + * Author: Yang Xu <xuyang2018.jy@cn.fujitsu.com> >> + * >> + * This case test various key type can support how many long >> + * bytes payload. >> + * keyring: 0 bytes >> + * user/logon: 32767 bytes >> + * big_key: 1M -1byte >> + */ >> + >> +#include <errno.h> >> +#include "tst_test.h" >> +#include "lapi/keyctl.h" >> + >> +struct tcase { >> + const char *type; >> + const char *desc; >> + size_t plen; >> + int pass_flag; >> + char *message; >> +} tcases[] = { >> + {"keyring", "abc", 0, 1, >> + "The key type is keyrings and plen is 0"}, >> + >> + {"keyring", "bcd", 1, 0, >> + "the key type is keyrings and plen is 1"}, >> + >> + {"user", "cde", 32767, 1, >> + "The key type is user and plen is 32767"}, >> + >> + {"user", "def", 32768, 0, >> + "The key type is user and plen is 32768"}, >> + >> + {"logon", "ef:g", 32767, 1, >> + "The key type is logon and plen is 32767"}, >> + >> + {"logon", "fg:h", 32768, 0, >> + "The key type is logon and plen is 32768"}, >> + >> + {"big_key", "ghi", (1 << 20) - 1, 1, >> + "The key type is big_key and plen is 1048575"}, >> + >> + {"big_key", "hij", 1 << 20, 0, >> + "The key type is big_key and plen is 1048576"}, >> +}; >> + >> +static char *buf; >> +static unsigned int logon_nsup, big_key_nsup; >> + >> +static void verify_add_key(unsigned int n) >> +{ >> + struct tcase *tc = &tcases[n]; >> + >> + tst_res(TINFO, "%s", tc->message); >> + >> + if (!strcmp(tc->type, "logon") && logon_nsup) { >> + tst_res(TINFO, >> + "current system doesn't support logon key type, skip it"); > This should be TCONF and the message could be much > shorther and to the point, something as: > > tst_res(TCONF, "skipping unsupported logon key"); OK. >> + return; >> + } >> + >> + if (!strcmp(tc->type, "big_key") && big_key_nsup) { >> + tst_res(TINFO, >> + "current system doesn't support big_key key type, skip it"); > > Here as well. OK. > >> + return; >> + } >> + >> + TEST(add_key(tc->type, tc->desc, buf, tc->plen, KEY_SPEC_THREAD_KEYRING)); >> + if (TST_RET == -1) { >> + if (TST_ERR == EINVAL) >> + tst_res(tc->pass_flag ? TFAIL : TPASS, "add_key call failed as expected"); >> + else >> + tst_res(TFAIL | TTERRNO, "add_key call failed expected EINVAL but got"); > > This is a bit confusing, we may get the messages even in a case that the > key is supposed to be successfully created, right? > > I guess that message "TFAIL: add_key call failed as expected" is not > right. > > Can we separate the negative a positive messages so that they are less > confusing? Of course. I will separate them. > >> + return; >> + } >> + tst_res(tc->pass_flag ? TPASS : TFAIL, "add_key call succeeded"); >> +} >> + >> +static void setup(void) >> +{ >> + TEST(add_key("logon", "test:sup_logon", buf, 64, KEY_SPEC_THREAD_KEYRING)); >> + if (TST_RET == -1) >> + logon_nsup = 1; >> + >> + TEST(add_key("big_key", "sup_big_key", buf, 64, KEY_SPEC_THREAD_KEYRING)); >> + if (TST_RET == -1) >> + big_key_nsup = 1; >> +} >> + >> +static struct tst_test test = { >> + .setup = setup, >> + .tcnt = ARRAY_SIZE(tcases), >> + .test = verify_add_key, >> + .bufs = (struct tst_buffers []) { >> + {&buf, .size = 1 << 20}, > > We actually need different buffer for each different plen size, because > the sole purpose of the buffer is to map a unaccessible page right after > the end of the buffer to catch off-by-one accesses. Agree. I will use different buffers. Also, I will modify add_key01.c code as you advised instead of creating a new add_key05.> >> + {} >> + } >> +}; >> -- >> 2.18.0 >> >> >> >> >> -- >> Mailing list info: https://lists.linux.it/listinfo/ltp > ^ permalink raw reply [flat|nested] 10+ messages in thread
* [LTP] [PATCH v2] syscalls/add_key01: test the length of payload 2020-01-21 15:13 ` [LTP] [PATCH 1/2] syscalls/add_key05: add new test for the length of payload Cyril Hrubis 2020-01-22 1:51 ` Yang Xu @ 2020-01-22 5:26 ` Yang Xu 2020-01-23 11:13 ` Cyril Hrubis 2020-01-23 13:06 ` Cyril Hrubis 1 sibling, 2 replies; 10+ messages in thread From: Yang Xu @ 2020-01-22 5:26 UTC (permalink / raw) To: ltp Seeing add_key manpages, the length of payload for "user"/"logon" is 32767, this value is up tp 1M for "big_key". For "keyring" type , this value is zero. --------- v1->v2: 1. use different buffers for different length 2. split pass and fail message, make code less confusing --------- Signed-off-by: Yang Xu <xuyang2018.jy@cn.fujitsu.com> --- testcases/kernel/syscalls/add_key/add_key01.c | 110 ++++++++++++++++-- 1 file changed, 102 insertions(+), 8 deletions(-) diff --git a/testcases/kernel/syscalls/add_key/add_key01.c b/testcases/kernel/syscalls/add_key/add_key01.c index 4fe97dac6..9830d48dc 100644 --- a/testcases/kernel/syscalls/add_key/add_key01.c +++ b/testcases/kernel/syscalls/add_key/add_key01.c @@ -4,23 +4,117 @@ * Porting from Crackerjack to LTP is done by * Manas Kumar Nayak maknayak@in.ibm.com> * - * Basic test for the add_key() syscall. + * This case test various key type can support how many long + * bytes payload. + * keyring: 0 bytes + * user/logon: 32767 bytes + * big_key: 1M -1byte */ #include <errno.h> - #include "tst_test.h" #include "lapi/keyctl.h" -static void verify_add_key(void) +static char *keyring_buf, *keyring_buf1; +static char *user_buf, *user_buf1; +static char *logon_buf, *logon_buf1; +static char *big_key_buf, *big_key_buf1; +static unsigned int logon_nsup, big_key_nsup; + +struct tcase { + const char *type; + const char *desc; + char **buf; + size_t plen; + int pass_flag; + char *message; +} tcases[] = { + {"keyring", "abc", &keyring_buf, 0, 1, + "The key type is keyrings and plen is 0"}, + + {"keyring", "bcd", &keyring_buf, 1, 0, + "the key type is keyrings and plen is 1"}, + + {"user", "cde", &user_buf, 32767, 1, + "The key type is user and plen is 32767"}, + + {"user", "def", &user_buf1, 32768, 0, + "The key type is user and plen is 32768"}, + + {"logon", "ef:g", &logon_buf, 32767, 1, + "The key type is logon and plen is 32767"}, + + {"logon", "fg:h", &logon_buf1, 32768, 0, + "The key type is logon and plen is 32768"}, + + {"big_key", "ghi", &big_key_buf, (1 << 20) - 1, 1, + "The key type is big_key and plen is 1048575"}, + + {"big_key", "hij", &big_key_buf1, 1 << 20, 0, + "The key type is big_key and plen is 1048576"}, +}; + +static void verify_add_key(unsigned int n) { - TEST(add_key("keyring", "wjkey", NULL, 0, KEY_SPEC_THREAD_KEYRING)); + struct tcase *tc = &tcases[n]; + + tst_res(TINFO, "%s", tc->message); + + if (!strcmp(tc->type, "logon") && logon_nsup) { + tst_res(TCONF, "skipping unsupported logon key"); + return; + } + if (!strcmp(tc->type, "big_key") && big_key_nsup) { + tst_res(TCONF, "skipping unsupported big_key key"); + return; + } + + TEST(add_key(tc->type, tc->desc, *tc->buf, tc->plen, KEY_SPEC_THREAD_KEYRING)); + if (tc->pass_flag) { + if (TST_RET == -1) + tst_res(TFAIL | TTERRNO, "add_key call failed unexpectedly"); + else + tst_res(TPASS, "add_key call succeeded as expected"); + } else { + if (TST_RET == -1) { + if (TST_ERR == EINVAL) + tst_res(TPASS | TTERRNO, "add_key call failed as expected"); + else + tst_res(TFAIL | TTERRNO, "add_key call failed expected EINVAL but got"); + } else + tst_res(TFAIL, "add_key call succeeded unexpectedly"); + } +} + +static void setup(void) +{ + char *logon_sup_buf, *big_key_sup_buf; + + logon_sup_buf = tst_alloc(64); + big_key_sup_buf = tst_alloc(64); + + TEST(add_key("logon", "test:sup_logon", logon_sup_buf, 64, KEY_SPEC_THREAD_KEYRING)); + if (TST_RET == -1) + logon_nsup = 1; + + TEST(add_key("big_key", "sup_big_key", big_key_sup_buf, 64, KEY_SPEC_THREAD_KEYRING)); if (TST_RET == -1) - tst_res(TFAIL | TTERRNO, "add_key call failed"); - else - tst_res(TPASS, "add_key call succeeded"); + big_key_nsup = 1; } static struct tst_test test = { - .test_all = verify_add_key, + .setup = setup, + .tcnt = ARRAY_SIZE(tcases), + .test = verify_add_key, + .bufs = (struct tst_buffers []) { + {&keyring_buf, .size = 1}, + {&keyring_buf1, .size = 1}, + {&user_buf, .size = 32767}, + {&user_buf1, .size = 32768}, + {&logon_buf, .size = 32767}, + {&logon_buf1, .size = 32768}, + {&big_key_buf, .size = (1 << 20) - 1}, + {&big_key_buf1, .size = 1 << 20}, + {} + } }; -- 2.18.0 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [LTP] [PATCH v2] syscalls/add_key01: test the length of payload 2020-01-22 5:26 ` [LTP] [PATCH v2] syscalls/add_key01: test " Yang Xu @ 2020-01-23 11:13 ` Cyril Hrubis 2020-01-23 12:44 ` Yang Xu 2020-01-23 13:06 ` Cyril Hrubis 1 sibling, 1 reply; 10+ messages in thread From: Cyril Hrubis @ 2020-01-23 11:13 UTC (permalink / raw) To: ltp Hi! > Seeing add_key manpages, the length of payload for "user"/"logon" > is 32767, this value is up tp 1M for "big_key". For "keyring" type > , this value is zero. This version is nearly good, there are a few minor things I can fix up before applying. However the test fails for me unless I run it as root. Looks like any key that is bigger than certain threshold fails with EDQUOT for me. Have you tried to run the test as an unpriviledged user? -- Cyril Hrubis chrubis@suse.cz ^ permalink raw reply [flat|nested] 10+ messages in thread
* [LTP] [PATCH v2] syscalls/add_key01: test the length of payload 2020-01-23 11:13 ` Cyril Hrubis @ 2020-01-23 12:44 ` Yang Xu 2020-01-23 12:56 ` Cyril Hrubis 0 siblings, 1 reply; 10+ messages in thread From: Yang Xu @ 2020-01-23 12:44 UTC (permalink / raw) To: ltp > Hi! >> Seeing add_key manpages, the length of payload for "user"/"logon" >> is 32767, this value is up tp 1M for "big_key". For "keyring" type >> , this value is zero. > > This version is nearly good, there are a few minor things I can fix up > before applying. > > However the test fails for me unless I run it as root. Looks like any > key that is bigger than certain threshold fails with EDQUOT for me. Have > you tried to run the test as an unpriviledged user? Hi Cyril I don't run this test under an unpriviledged user. Seeing keyrings manpages, it said " /proc/sys/kernel/keys/maxbytes (since Linux 2.6.26) This is the maximum number of bytes of data that a nonroot user can hold in the payloads of the keys owned by theuser. The default value in this file is 20,000. I perfer to add .needs_root in this flag and check this in a new case. What do you think about it? Best Regards Yang Xu > ^ permalink raw reply [flat|nested] 10+ messages in thread
* [LTP] [PATCH v2] syscalls/add_key01: test the length of payload 2020-01-23 12:44 ` Yang Xu @ 2020-01-23 12:56 ` Cyril Hrubis 0 siblings, 0 replies; 10+ messages in thread From: Cyril Hrubis @ 2020-01-23 12:56 UTC (permalink / raw) To: ltp Hi! > I don't run this test under an unpriviledged user. Seeing keyrings > manpages, it said " > /proc/sys/kernel/keys/maxbytes (since Linux 2.6.26) > This is the maximum number of bytes of data that a nonroot user can > hold in the payloads of the keys owned by theuser. > The default value in this file is 20,000. Hmm, that means that we should write a test for this limit as well. > I perfer to add .needs_root in this flag and check this in a new case. > What do you think about it? Sounds good, I was thinking the same. So I will fix this and a few minor things as well and push this patch. -- Cyril Hrubis chrubis@suse.cz ^ permalink raw reply [flat|nested] 10+ messages in thread
* [LTP] [PATCH v2] syscalls/add_key01: test the length of payload 2020-01-22 5:26 ` [LTP] [PATCH v2] syscalls/add_key01: test " Yang Xu 2020-01-23 11:13 ` Cyril Hrubis @ 2020-01-23 13:06 ` Cyril Hrubis 1 sibling, 0 replies; 10+ messages in thread From: Cyril Hrubis @ 2020-01-23 13:06 UTC (permalink / raw) To: ltp Hi! I've removed the save buffers from the test setup, since I do not think that we should use them for the syscall availability check, added the .needs_root flag and pushed. Thanks. -- Cyril Hrubis chrubis@suse.cz ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2020-01-23 13:06 UTC | newest] Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2020-01-19 7:49 [LTP] [PATCH 1/2] syscalls/add_key05: add new test for the length of payload Yang Xu 2020-01-19 7:49 ` [LTP] [PATCH 2/2] syscalls/add_key01: remove duplicated case Yang Xu 2020-01-21 14:50 ` Cyril Hrubis 2020-01-21 15:13 ` [LTP] [PATCH 1/2] syscalls/add_key05: add new test for the length of payload Cyril Hrubis 2020-01-22 1:51 ` Yang Xu 2020-01-22 5:26 ` [LTP] [PATCH v2] syscalls/add_key01: test " Yang Xu 2020-01-23 11:13 ` Cyril Hrubis 2020-01-23 12:44 ` Yang Xu 2020-01-23 12:56 ` Cyril Hrubis 2020-01-23 13:06 ` Cyril Hrubis
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.