1e3b515280339c3669ad38b7253cacb8d77e775f7Guangwen Feng/* 2e3b515280339c3669ad38b7253cacb8d77e775f7Guangwen Feng * Copyright (c) Crackerjack Project., 2007 3e3b515280339c3669ad38b7253cacb8d77e775f7Guangwen Feng * Copyright (c) 2017 Fujitsu Ltd. 4e3b515280339c3669ad38b7253cacb8d77e775f7Guangwen Feng * 5e3b515280339c3669ad38b7253cacb8d77e775f7Guangwen Feng * This program is free software; you can redistribute it and/or modify 6e3b515280339c3669ad38b7253cacb8d77e775f7Guangwen Feng * it under the terms of the GNU General Public License as published by 7e3b515280339c3669ad38b7253cacb8d77e775f7Guangwen Feng * the Free Software Foundation; either version 2 of the License, or 8e3b515280339c3669ad38b7253cacb8d77e775f7Guangwen Feng * (at your option) any later version. 9e3b515280339c3669ad38b7253cacb8d77e775f7Guangwen Feng * 10e3b515280339c3669ad38b7253cacb8d77e775f7Guangwen Feng * This program is distributed in the hope that it will be useful, 11e3b515280339c3669ad38b7253cacb8d77e775f7Guangwen Feng * but WITHOUT ANY WARRANTY; without even the implied warranty of 12e3b515280339c3669ad38b7253cacb8d77e775f7Guangwen Feng * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See 13e3b515280339c3669ad38b7253cacb8d77e775f7Guangwen Feng * the GNU General Public License for more details. 14e3b515280339c3669ad38b7253cacb8d77e775f7Guangwen Feng * 15e3b515280339c3669ad38b7253cacb8d77e775f7Guangwen Feng * You should have received a copy of the GNU General Public License 16e3b515280339c3669ad38b7253cacb8d77e775f7Guangwen Feng * along with this program, if not, see <http://www.gnu.org/licenses/>. 17e3b515280339c3669ad38b7253cacb8d77e775f7Guangwen Feng */ 18e3b515280339c3669ad38b7253cacb8d77e775f7Guangwen Feng 19da7d01b0afd7b89edfca1fe0344d8d376f669b3aCyril Hrubis/* 20da7d01b0afd7b89edfca1fe0344d8d376f669b3aCyril Hrubis * Description: This tests the keyctl() syscall 21da7d01b0afd7b89edfca1fe0344d8d376f669b3aCyril Hrubis * Manipulate the kernel's key management facility 22da7d01b0afd7b89edfca1fe0344d8d376f669b3aCyril Hrubis * 23e3b515280339c3669ad38b7253cacb8d77e775f7Guangwen Feng * Ported by Manas Kumar Nayak maknayak@in.ibm.com> 24e3b515280339c3669ad38b7253cacb8d77e775f7Guangwen Feng * Modified by Guangwen Feng <fenggw-fnst@cn.fujitsu.com> 25da7d01b0afd7b89edfca1fe0344d8d376f669b3aCyril Hrubis */ 265c8fc01200ab5fedc1a1c4cb0989e6bfe1fc0c47subrata_modak 27da908058635ca58caf3e85814f2eba68febad1e1Garrett Cooper#include <errno.h> 28988aabfb05cbe808b5110eda4feab5a2ac8a7703Cyril Hrubis#include <stdint.h> 294e7726497211222385eaee5e7cf2968842702a46Garrett Cooper 30e3b515280339c3669ad38b7253cacb8d77e775f7Guangwen Feng#include "tst_test.h" 31e3b515280339c3669ad38b7253cacb8d77e775f7Guangwen Feng#include "lapi/keyctl.h" 325c8fc01200ab5fedc1a1c4cb0989e6bfe1fc0c47subrata_modak 33e3b515280339c3669ad38b7253cacb8d77e775f7Guangwen Fengstatic void do_test(void) 34354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao{ 35e3b515280339c3669ad38b7253cacb8d77e775f7Guangwen Feng key_serial_t key; 36da908058635ca58caf3e85814f2eba68febad1e1Garrett Cooper 37974a9282b5bda74c221d0c998c949b1266e4efc5Guangwen Feng TEST(keyctl(KEYCTL_GET_KEYRING_ID, KEY_SPEC_USER_SESSION_KEYRING)); 38e3b515280339c3669ad38b7253cacb8d77e775f7Guangwen Feng if (TEST_RETURN != -1) 39e3b515280339c3669ad38b7253cacb8d77e775f7Guangwen Feng tst_res(TPASS, "KEYCTL_GET_KEYRING_ID succeeded"); 40e3b515280339c3669ad38b7253cacb8d77e775f7Guangwen Feng else 41e3b515280339c3669ad38b7253cacb8d77e775f7Guangwen Feng tst_res(TFAIL | TTERRNO, "KEYCTL_GET_KEYRING_ID failed"); 42faf0748216a2c3f2716131f0958ed34ea874d7e7yaberauneya 43e3b515280339c3669ad38b7253cacb8d77e775f7Guangwen Feng for (key = INT32_MAX; key > INT32_MIN; key--) { 44974a9282b5bda74c221d0c998c949b1266e4efc5Guangwen Feng TEST(keyctl(KEYCTL_READ, key)); 45e3b515280339c3669ad38b7253cacb8d77e775f7Guangwen Feng if (TEST_RETURN == -1 && TEST_ERRNO == ENOKEY) 46e3b515280339c3669ad38b7253cacb8d77e775f7Guangwen Feng break; 47e3b515280339c3669ad38b7253cacb8d77e775f7Guangwen Feng } 485c8fc01200ab5fedc1a1c4cb0989e6bfe1fc0c47subrata_modak 49974a9282b5bda74c221d0c998c949b1266e4efc5Guangwen Feng TEST(keyctl(KEYCTL_REVOKE, key)); 50e3b515280339c3669ad38b7253cacb8d77e775f7Guangwen Feng if (TEST_RETURN != -1) { 51e3b515280339c3669ad38b7253cacb8d77e775f7Guangwen Feng tst_res(TFAIL, "KEYCTL_REVOKE succeeded unexpectedly"); 52e3b515280339c3669ad38b7253cacb8d77e775f7Guangwen Feng return; 53e3b515280339c3669ad38b7253cacb8d77e775f7Guangwen Feng } 545c8fc01200ab5fedc1a1c4cb0989e6bfe1fc0c47subrata_modak 55e3b515280339c3669ad38b7253cacb8d77e775f7Guangwen Feng if (TEST_ERRNO != ENOKEY) { 56e3b515280339c3669ad38b7253cacb8d77e775f7Guangwen Feng tst_res(TFAIL | TTERRNO, "KEYCTL_REVOKE failed unexpectedly"); 57e3b515280339c3669ad38b7253cacb8d77e775f7Guangwen Feng return; 58faf0748216a2c3f2716131f0958ed34ea874d7e7yaberauneya } 59e3b515280339c3669ad38b7253cacb8d77e775f7Guangwen Feng 60e3b515280339c3669ad38b7253cacb8d77e775f7Guangwen Feng tst_res(TPASS | TTERRNO, "KEYCTL_REVOKE failed as expected"); 61e99ebbc091b9a6244864d5f80a4ae2e70f65a70dGarrett Cooper} 62e3b515280339c3669ad38b7253cacb8d77e775f7Guangwen Feng 63e3b515280339c3669ad38b7253cacb8d77e775f7Guangwen Fengstatic struct tst_test test = { 64e3b515280339c3669ad38b7253cacb8d77e775f7Guangwen Feng .test_all = do_test, 65e3b515280339c3669ad38b7253cacb8d77e775f7Guangwen Feng}; 66