Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
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