12 |
|
|
13 |
static int is_enforce = 0; |
static int is_enforce = 0; |
14 |
|
|
15 |
static void ShowPrompt(const char *str) |
static void show_prompt(const char *str) |
16 |
{ |
{ |
17 |
printf("Testing %40s: (%s) ", str, |
printf("Testing %40s: (%s) ", str, |
18 |
is_enforce ? "must fail" : "should success"); |
is_enforce ? "must fail" : "should success"); |
19 |
errno = 0; |
errno = 0; |
20 |
} |
} |
21 |
|
|
22 |
static void ShowResult(int result) |
static void show_result(int result) |
23 |
{ |
{ |
24 |
if (is_enforce) { |
if (is_enforce) { |
25 |
if (result == EOF) { |
if (result == EOF) { |
38 |
} |
} |
39 |
} |
} |
40 |
|
|
41 |
static void StageEnvTest(void) |
static void stage_env_test(void) |
42 |
{ |
{ |
43 |
static char buffer[1024]; |
static char buffer[1024]; |
44 |
char *argv[2] = { "true", NULL }; |
char *argv[2] = { "true", NULL }; |
47 |
memset(buffer, 0, sizeof(buffer)); |
memset(buffer, 0, sizeof(buffer)); |
48 |
{ |
{ |
49 |
is_enforce = 0; |
is_enforce = 0; |
50 |
WriteStatus("MAC_FOR_ENV=2\n"); |
write_status("MAC_FOR_ENV=2\n"); |
51 |
if (fork() == 0) { |
if (fork() == 0) { |
52 |
execve("/bin/true", argv, envp); |
execve("/bin/true", argv, envp); |
53 |
_exit(errno); |
_exit(errno); |
54 |
} |
} |
55 |
snprintf(buffer, sizeof(buffer) - 1, |
snprintf(buffer, sizeof(buffer) - 1, |
56 |
"Executing /bin/true in permissive mode"); |
"Executing /bin/true in permissive mode"); |
57 |
ShowPrompt(buffer); |
show_prompt(buffer); |
58 |
wait(&status); |
wait(&status); |
59 |
errno = WEXITSTATUS(status); |
errno = WEXITSTATUS(status); |
60 |
ShowResult(errno ? EOF : 0); |
show_result(errno ? EOF : 0); |
61 |
|
|
62 |
is_enforce = 1; |
is_enforce = 1; |
63 |
WriteStatus("MAC_FOR_ENV=3\n"); |
write_status("MAC_FOR_ENV=3\n"); |
64 |
if (fork() == 0) { |
if (fork() == 0) { |
65 |
execve("/bin/true", argv, envp); |
execve("/bin/true", argv, envp); |
66 |
_exit(errno); |
_exit(errno); |
67 |
} |
} |
68 |
snprintf(buffer, sizeof(buffer) - 1, |
snprintf(buffer, sizeof(buffer) - 1, |
69 |
"Executing /bin/true in enforce mode"); |
"Executing /bin/true in enforce mode"); |
70 |
ShowPrompt(buffer); |
show_prompt(buffer); |
71 |
wait(&status); |
wait(&status); |
72 |
errno = WEXITSTATUS(status); |
errno = WEXITSTATUS(status); |
73 |
ShowResult(errno ? EOF : 0); |
show_result(errno ? EOF : 0); |
74 |
|
|
75 |
is_enforce = 0; |
is_enforce = 0; |
76 |
if (fork() == 0) { |
if (fork() == 0) { |
80 |
} |
} |
81 |
snprintf(buffer, sizeof(buffer) - 1, |
snprintf(buffer, sizeof(buffer) - 1, |
82 |
"Executing /bin/true in enforce mode"); |
"Executing /bin/true in enforce mode"); |
83 |
ShowPrompt(buffer); |
show_prompt(buffer); |
84 |
wait(&status); |
wait(&status); |
85 |
errno = WEXITSTATUS(status); |
errno = WEXITSTATUS(status); |
86 |
ShowResult(errno ? EOF : 0); |
show_result(errno ? EOF : 0); |
87 |
} |
} |
88 |
} |
} |
89 |
|
|
90 |
int main(int argc, char *argv[]) |
int main(int argc, char *argv[]) |
91 |
{ |
{ |
92 |
Init(); |
ccs_test_init(); |
93 |
StageEnvTest(); |
stage_env_test(); |
94 |
ClearStatus(); |
clear_status(); |
95 |
return 0; |
return 0; |
96 |
} |
} |