1// SPDX-License-Identifier: GPL-2.0 2/* 3 * This test covers the PR_SET_NAME functionality of prctl calls 4 */ 5 6#include <errno.h> 7#include <sys/prctl.h> 8#include <string.h> 9 10#include "../kselftest_harness.h" 11 12#define CHANGE_NAME "changename" 13#define EMPTY_NAME "" 14#define TASK_COMM_LEN 16 15 16int set_name(char *name) 17{ 18 int res; 19 20 res = prctl(PR_SET_NAME, name, NULL, NULL, NULL); 21 22 if (res < 0) 23 return -errno; 24 return res; 25} 26 27int check_is_name_correct(char *check_name) 28{ 29 char name[TASK_COMM_LEN]; 30 int res; 31 32 res = prctl(PR_GET_NAME, name, NULL, NULL, NULL); 33 34 if (res < 0) 35 return -errno; 36 37 return !strcmp(name, check_name); 38} 39 40int check_null_pointer(char *check_name) 41{ 42 char *name = NULL; 43 int res; 44 45 res = prctl(PR_GET_NAME, name, NULL, NULL, NULL); 46 47 return res; 48} 49 50TEST(rename_process) { 51 52 EXPECT_GE(set_name(CHANGE_NAME), 0); 53 EXPECT_TRUE(check_is_name_correct(CHANGE_NAME)); 54 55 EXPECT_GE(set_name(EMPTY_NAME), 0); 56 EXPECT_TRUE(check_is_name_correct(EMPTY_NAME)); 57 58 EXPECT_GE(set_name(CHANGE_NAME), 0); 59 EXPECT_LT(check_null_pointer(CHANGE_NAME), 0); 60} 61 62TEST_HARNESS_MAIN 63