v1: use number as argument in keyctl syscall function
v2: add some codes to find an unused id instead of 
using #define directly.
v3: use INT32_MIN to replace -INT32_MAX; remove 
intermediate variable i.

Signed-off-by: Caspar Zhang <[email protected]>

---
 testcases/kernel/syscalls/keyctl/keyctl01.c |   14 ++++++++++++--
 1 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/testcases/kernel/syscalls/keyctl/keyctl01.c 
b/testcases/kernel/syscalls/keyctl/keyctl01.c
index 292e573..11b563b 100644
--- a/testcases/kernel/syscalls/keyctl/keyctl01.c
+++ b/testcases/kernel/syscalls/keyctl/keyctl01.c
@@ -40,6 +40,7 @@
 
 #include <stdio.h>
 #include <errno.h>
+#include <stdint.h>
 #include <linux/keyctl.h>
 /* Harness Specific Include Files. */
 #include "test.h"
@@ -110,6 +111,7 @@ void setup() {
 int main(int ac, char **av) {
        int ret;
        int lc;         /* loop counter */
+       int ne_key;     /* non-existed key */
        char *msg;      /* message returned from parse_opts */
 
        /* parse standard options */
@@ -126,7 +128,7 @@ int main(int ac, char **av) {
                Tst_count = 0;
 
                for (testno = 1; testno < TST_TOTAL; ++testno) {
-       
+
                        /* Call keyctl() and ask for a keyring's ID. */
                        ret = syscall(__NR_keyctl, KEYCTL_GET_KEYRING_ID,
                                        KEY_SPEC_USER_SESSION_KEYRING);
@@ -136,8 +138,16 @@ int main(int ac, char **av) {
                                tst_resm(TFAIL | TERRNO, 
"KEYCTL_GET_KEYRING_ID");
                        }
 
+                       /* find a non-existed key */
+                       for (ne_key = INT32_MAX; ne_key > INT32_MIN; --ne_key)
+                       {
+                               ret = syscall(__NR_keyctl, KEYCTL_READ, ne_key);
+                               if (ret == -1 && errno == ENOKEY)
+                                       break;
+                       }
+
                        /* Call keyctl. */
-                       ret = syscall(__NR_keyctl, KEYCTL_REVOKE, "MyKey");
+                       ret = syscall(__NR_keyctl, KEYCTL_REVOKE, ne_key);
                        if (ret != -1) {
                                tst_resm(TFAIL | TERRNO, "KEYCTL_REVOKE 
succeeded unexpectly");
                        } else {
-- 
1.7.3.1

-- 
Quality Assurance Associate (Kernel) in
Red Hat Software (Beijing) Co., R&D Branch

TEL: +86-10-62608150
WEB: http://www.redhat.com/

------------------------------------------------------------------------------
Nokia and AT&T present the 2010 Calling All Innovators-North America contest
Create new apps & games for the Nokia N8 for consumers in  U.S. and Canada
$10 million total in prizes - $4M cash, 500 devices, nearly $6M in marketing
Develop with Nokia Qt SDK, Web Runtime, or Java and Publish to Ovi Store 
http://p.sf.net/sfu/nokia-dev2dev
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to