| // SPDX-License-Identifier: GPL-2.0 | |
| /* | |
| * This test covers the PR_SET_NAME functionality of prctl calls | |
| */ | |
| #include <errno.h> | |
| #include <sys/prctl.h> | |
| #include <string.h> | |
| #include "../kselftest_harness.h" | |
| #define CHANGE_NAME "changename" | |
| #define EMPTY_NAME "" | |
| #define TASK_COMM_LEN 16 | |
| int set_name(char *name) | |
| { | |
| int res; | |
| res = prctl(PR_SET_NAME, name, NULL, NULL, NULL); | |
| if (res < 0) | |
| return -errno; | |
| return res; | |
| } | |
| int check_is_name_correct(char *check_name) | |
| { | |
| char name[TASK_COMM_LEN]; | |
| int res; | |
| res = prctl(PR_GET_NAME, name, NULL, NULL, NULL); | |
| if (res < 0) | |
| return -errno; | |
| return !strcmp(name, check_name); | |
| } | |
| int check_null_pointer(char *check_name) | |
| { | |
| char *name = NULL; | |
| int res; | |
| res = prctl(PR_GET_NAME, name, NULL, NULL, NULL); | |
| return res; | |
| } | |
| TEST(rename_process) { | |
| EXPECT_GE(set_name(CHANGE_NAME), 0); | |
| EXPECT_TRUE(check_is_name_correct(CHANGE_NAME)); | |
| EXPECT_GE(set_name(EMPTY_NAME), 0); | |
| EXPECT_TRUE(check_is_name_correct(EMPTY_NAME)); | |
| EXPECT_GE(set_name(CHANGE_NAME), 0); | |
| EXPECT_LT(check_null_pointer(CHANGE_NAME), 0); | |
| } | |
| TEST_HARNESS_MAIN |