-
Notifications
You must be signed in to change notification settings - Fork 1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
request_key: Add negative tests for request_key
Add negative tests for request_key(), when errno is EFAULT or EPERM Signed-off-by: Ma Xinjian <[email protected]> Reviewed-by: Petr Vorel <[email protected]> Reviewed-by: Cyril Hrubis <[email protected]>
- Loading branch information
Showing
3 changed files
with
54 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,3 +3,4 @@ | |
/request_key03 | ||
/request_key04 | ||
/request_key05 | ||
/request_key06 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
// SPDX-License-Identifier: GPL-2.0-or-later | ||
/* | ||
* Copyright (c) 2024 FUJITSU LIMITED. All Rights Reserved. | ||
* Author: Ma Xinjian <[email protected]> | ||
*/ | ||
|
||
/*\ | ||
* [Description] | ||
* | ||
* Verify that request_key(2) fails with | ||
* | ||
* - EFAULT when type points outside the process's accessible address space | ||
* - EFAULT when description points outside the process's accessible address space | ||
* - EFAULT when callout_info points outside the process's accessible address space | ||
* - EPERM when type argument started with a period '.' | ||
*/ | ||
|
||
#include "tst_test.h" | ||
#include "lapi/keyctl.h" | ||
|
||
static struct test_case_t { | ||
char *type; | ||
char *description; | ||
char *callout_info; | ||
key_serial_t dest_keyring; | ||
int expected_errno; | ||
char *desc; | ||
} tcases[] = { | ||
{(char *)(-1), "description", NULL, KEY_SPEC_PROCESS_KEYRING, EFAULT, | ||
"type points outside the process's accessible address space"}, | ||
{"type", (char *)(-1), NULL, KEY_SPEC_PROCESS_KEYRING, EFAULT, | ||
"description points outside the process's accessible address space"}, | ||
{"type", "description", (char *)(-1), KEY_SPEC_PROCESS_KEYRING, EFAULT, | ||
"callout_info points outside the process's accessible address space"}, | ||
{".type", "description", NULL, KEY_SPEC_PROCESS_KEYRING, EPERM, | ||
"type argument started with a period '.'"}, | ||
}; | ||
|
||
static void verify_request_key(unsigned int i) | ||
{ | ||
struct test_case_t *tc = &tcases[i]; | ||
|
||
TST_EXP_FAIL2(request_key(tc->type, tc->description, tc->callout_info, | ||
tc->dest_keyring), | ||
tc->expected_errno, | ||
"%s", tc->desc); | ||
} | ||
|
||
static struct tst_test test = { | ||
.tcnt = ARRAY_SIZE(tcases), | ||
.test = verify_request_key, | ||
}; |