オープンソース・ソフトウェアの開発とダウンロード

Subversion リポジトリの参照

Annotation of /trunk/1.6.x/ccs-tools/ccstools/kernel_test/tomoyo_env_test.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 821 - (hide annotations) (download) (as text)
Wed Dec 19 05:00:54 2007 UTC (16 years, 5 months ago) by kumaneko
Original Path: trunk/1.5.x/ccs-tools/ccstools/kernel_test/tomoyo_env_test.c
File MIME type: text/x-csrc
File size: 1870 byte(s)


1 kumaneko 821 /*
2     * tomoyo_env_test.c
3     *
4     * Testing program for fs/tomoyo_env.c
5     *
6     * Copyright (C) 2005-2007 NTT DATA CORPORATION
7     *
8     * Version: 1.5.3-pre 2007/12/19
9     *
10     */
11     #include "include.h"
12    
13     static int is_enforce = 0;
14    
15     static void ShowPrompt(const char *str) {
16     printf("Testing %40s: (%s) ", str, is_enforce ? "must fail" : "should success");
17     errno = 0;
18     }
19    
20     static void ShowResult(int result) {
21     if (is_enforce) {
22     if (result == EOF) {
23     if (errno == EPERM) printf("OK: Permission denied.\n");
24     else printf("FAILED: %s\n", strerror(errno));
25     } else {
26     printf("BUG!\n");
27     }
28     } else {
29     if (result != EOF) printf("OK\n");
30     else printf("%s\n", strerror(errno));
31     }
32     }
33    
34     static void StageEnvTest(void) {
35     static char buffer[1024];
36     char *argv[2] = { "true", NULL };
37     char *envp[2] = { "env-test", NULL };
38     int status = 0;
39     memset(buffer, 0, sizeof(buffer));
40     {
41     is_enforce = 0; WriteStatus("MAC_FOR_ENV=2\n");
42     if (fork() == 0) {
43     execve("/bin/true", argv, envp);
44     _exit(errno);
45     }
46     snprintf(buffer, sizeof(buffer) - 1, "Executing /bin/true in permissive mode");
47     ShowPrompt(buffer);
48     wait(&status);
49     errno = WEXITSTATUS(status);
50     ShowResult(errno ? EOF : 0);
51    
52     is_enforce = 1; WriteStatus("MAC_FOR_ENV=3\n");
53     if (fork() == 0) {
54     execve("/bin/true", argv, envp);
55     _exit(errno);
56     }
57     snprintf(buffer, sizeof(buffer) - 1, "Executing /bin/true in enforce mode");
58     ShowPrompt(buffer);
59     wait(&status);
60     errno = WEXITSTATUS(status);
61     ShowResult(errno ? EOF : 0);
62    
63     is_enforce = 0;
64     if (fork() == 0) {
65     envp[0] = "";
66     execve("/bin/true", argv, envp);
67     _exit(errno);
68     }
69     snprintf(buffer, sizeof(buffer) - 1, "Executing /bin/true in enforce mode");
70     ShowPrompt(buffer);
71     wait(&status);
72     errno = WEXITSTATUS(status);
73     ShowResult(errno ? EOF : 0);
74     }
75     }
76    
77     int main(int argc, char *argv[]) {
78     Init();
79     StageEnvTest();
80     ClearStatus();
81     return 0;
82     }

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26