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

Subversion リポジトリの参照

Annotation of /trunk/2.4.x/tomoyo-tools/kernel_test/tomoyo_new_file_test.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3059 - (hide annotations) (download) (as text)
Mon Sep 21 08:15:59 2009 UTC (14 years, 7 months ago) by kumaneko
Original Path: trunk/1.7.x/ccs-tools/ccstools/kernel_test/ccs_new_file_test.c
File MIME type: text/x-csrc
File size: 19062 byte(s)


1 kumaneko 1066 /*
2     * tomoyo_file_test.c
3     *
4     * Testing program for fs/tomoyo_file.c
5     *
6 kumaneko 2030 * Copyright (C) 2005-2009 NTT DATA CORPORATION
7 kumaneko 1066 *
8 kumaneko 2985 * Version: 1.7.0 2009/09/03
9 kumaneko 1066 *
10     */
11     #include "include.h"
12    
13     static const char *policy = "";
14    
15 kumaneko 2943 #if 0
16 kumaneko 1726 static int write_policy(void)
17     {
18 kumaneko 1066 FILE *fp;
19     char buffer[8192];
20     int domain_found = 0;
21     int policy_found = 0;
22     memset(buffer, 0, sizeof(buffer));
23 kumaneko 2943 set_profile(0, "file::open");
24 kumaneko 1066 fp = fopen(proc_policy_domain_policy, "r");
25 kumaneko 2943 set_profile(3, "file::open");
26 kumaneko 2908 fprintf(domain_fp, "%s\n", policy);
27 kumaneko 1066 if (!fp) {
28     printf("%s : BUG: policy read failed\n", policy);
29     return 0;
30     }
31     while (fgets(buffer, sizeof(buffer) - 1, fp)) {
32 kumaneko 2908 char *cp = strchr(buffer, '\n');
33 kumaneko 1726 if (cp)
34     *cp = '\0';
35     if (!strncmp(buffer, "<kernel>", 8))
36     domain_found = !strcmp(self_domain, buffer);
37 kumaneko 2908 if (!domain_found)
38     continue;
39     /* printf("<%s>\n", buffer); */
40     if (!strcmp(buffer, policy)) {
41     policy_found = 1;
42     break;
43 kumaneko 1066 }
44     }
45     fclose(fp);
46     if (!policy_found) {
47     printf("%s : BUG: policy write failed\n", policy);
48     return 0;
49     }
50     errno = 0;
51     return 1;
52     }
53 kumaneko 2943 #endif
54 kumaneko 1066
55 kumaneko 1726 static void show_result(int result, char should_success)
56     {
57 kumaneko 1066 int err = errno;
58     printf("%s : ", policy);
59     if (should_success) {
60 kumaneko 1726 if (result != EOF)
61     printf("OK\n");
62     else
63     printf("FAILED: %s\n", strerror(err));
64 kumaneko 1066 } else {
65     if (result == EOF) {
66 kumaneko 1726 if (err == EPERM)
67     printf("OK: Permission denied.\n");
68     else
69     printf("FAILED: %s\n", strerror(err));
70 kumaneko 1066 } else {
71     printf("BUG: didn't fail.\n");
72     }
73     }
74     }
75    
76 kumaneko 1726 static void create2(const char *pathname)
77     {
78 kumaneko 2943 set_profile(0, "file::create");
79     set_profile(0, "file::open");
80 kumaneko 1066 close(creat(pathname, 0600));
81 kumaneko 2943 set_profile(3, "file::create");
82     set_profile(3, "file::open");
83 kumaneko 1148 errno = 0;
84 kumaneko 1066 }
85    
86 kumaneko 1726 static void mkdir2(const char *pathname)
87     {
88 kumaneko 2943 set_profile(0, "file::mkdir");
89 kumaneko 1066 mkdir(pathname, 0600);
90 kumaneko 2943 set_profile(3, "file::mkdir");
91 kumaneko 1148 errno = 0;
92 kumaneko 1066 }
93    
94 kumaneko 1726 static void unlink2(const char *pathname)
95     {
96 kumaneko 2943 set_profile(0, "file::unlink");
97 kumaneko 1066 unlink(pathname);
98 kumaneko 2943 set_profile(3, "file::unlink");
99 kumaneko 1148 errno = 0;
100 kumaneko 1726 }
101 kumaneko 1066
102 kumaneko 1726 static void rmdir2(const char *pathname)
103     {
104 kumaneko 2943 set_profile(0, "file::rmdir");
105 kumaneko 1066 rmdir(pathname);
106 kumaneko 2943 set_profile(3, "file::rmdir");
107 kumaneko 1148 errno = 0;
108 kumaneko 1066 }
109    
110 kumaneko 2563 static void mkfifo2(const char *pathname)
111     {
112 kumaneko 2943 set_profile(0, "file::mkfifo");
113 kumaneko 2563 mkfifo(pathname, 0600);
114 kumaneko 2943 set_profile(3, "file::mkfifo");
115 kumaneko 2563 errno = 0;
116     }
117    
118 kumaneko 1744 static void stage_file_test(void)
119 kumaneko 1726 {
120 kumaneko 2943 static int name[] = { CTL_NET, NET_IPV4, NET_IPV4_LOCAL_PORT_RANGE };
121     int buffer[2] = { 32768, 61000 };
122     size_t size = sizeof(buffer);
123     int pipe_fd[2] = { EOF, EOF };
124     int err = 0;
125     int fd;
126     char pbuffer[1024];
127     struct stat sbuf;
128     struct sockaddr_un addr;
129     struct ifreq ifreq;
130 kumaneko 1066 char *filename = "";
131 kumaneko 2943 set_profile(3, "file::execute");
132     set_profile(3, "file::open");
133     set_profile(3, "file::create");
134     set_profile(3, "file::unlink");
135     set_profile(3, "file::mkdir");
136     set_profile(3, "file::rmdir");
137     set_profile(3, "file::mkfifo");
138     set_profile(3, "file::mksock");
139     set_profile(3, "file::truncate");
140     set_profile(3, "file::symlink");
141     set_profile(3, "file::rewrite");
142     set_profile(3, "file::mkblock");
143     set_profile(3, "file::mkchar");
144     set_profile(3, "file::link");
145     set_profile(3, "file::rename");
146     set_profile(3, "file::chmod");
147     set_profile(3, "file::chown");
148     set_profile(3, "file::chgrp");
149     set_profile(3, "file::ioctl");
150     set_profile(3, "file::chroot");
151     set_profile(3, "file::mount");
152     set_profile(3, "file::umount");
153     set_profile(3, "file::pivot_root");
154 kumaneko 2984
155 kumaneko 1726 policy = "allow_read /proc/sys/net/ipv4/ip_local_port_range "
156     "if task.uid=0 task.gid=0";
157 kumaneko 2943 write_domain_policy(policy, 0);
158     show_result(sysctl(name, 3, buffer, &size, 0, 0), 1);
159     write_domain_policy(policy, 1);
160     show_result(sysctl(name, 3, buffer, &size, 0, 0), 0);
161 kumaneko 2984
162 kumaneko 1726 policy = "allow_write /proc/sys/net/ipv4/ip_local_port_range "
163     "if task.euid=0 0=0 1-100=10-1000";
164 kumaneko 2943 write_domain_policy(policy, 0);
165     show_result(sysctl(name, 3, 0, 0, buffer, size), 1);
166     write_domain_policy(policy, 1);
167     show_result(sysctl(name, 3, 0, 0, buffer, size), 0);
168 kumaneko 2984
169 kumaneko 1726 policy = "allow_read/write /proc/sys/net/ipv4/ip_local_port_range "
170     "if 1!=10-100";
171 kumaneko 2943 write_domain_policy(policy, 0);
172     show_result(sysctl(name, 3, buffer, &size, buffer, size), 1);
173     write_domain_policy(policy, 1);
174     show_result(sysctl(name, 3, buffer, &size, buffer, size), 0);
175 kumaneko 2984
176 kumaneko 1726 policy = "allow_read /bin/true "
177     "if path1.uid=0 path1.parent.uid=0 10=10-100";
178 kumaneko 2943 write_domain_policy(policy, 0);
179     show_result(uselib("/bin/true"), 1);
180     write_domain_policy(policy, 1);
181     show_result(uselib("/bin/true"), 0);
182 kumaneko 2984
183 kumaneko 1664 policy = "allow_execute /bin/true if task.uid!=10 path1.parent.uid=0";
184 kumaneko 2943 write_domain_policy(policy, 0);
185     fflush(stdout);
186     fflush(stderr);
187     pipe(pipe_fd);
188     if (fork() == 0) {
189     execl("/bin/true", "/bin/true", NULL);
190     err = errno;
191     write(pipe_fd[1], &err, sizeof(err));
192     _exit(0);
193 kumaneko 1066 }
194 kumaneko 2943 close(pipe_fd[1]);
195     read(pipe_fd[0], &err, sizeof(err));
196     close(pipe_fd[0]);
197     wait(NULL);
198     errno = err;
199     show_result(err ? EOF : 0, 1);
200     write_domain_policy(policy, 1);
201     fflush(stdout);
202     fflush(stderr);
203     pipe(pipe_fd);
204     if (fork() == 0) {
205     execl("/bin/true", "/bin/true", NULL);
206     err = errno;
207     write(pipe_fd[1], &err, sizeof(err));
208     _exit(0);
209     }
210     close(pipe_fd[1]);
211     read(pipe_fd[0], &err, sizeof(err));
212     close(pipe_fd[0]);
213     wait(NULL);
214     errno = err;
215     show_result(err ? EOF : 0, 0);
216 kumaneko 1066
217 kumaneko 1996 policy = "allow_read /dev/null if path1.type=char path1.dev_major=1 "
218     "path1.dev_minor=3";
219 kumaneko 2943 write_domain_policy(policy, 0);
220     fd = open("/dev/null", O_RDONLY);
221     show_result(fd, 1);
222     if (fd != EOF)
223     close(fd);
224     write_domain_policy(policy, 1);
225     fd = open("/dev/null", O_RDONLY);
226     show_result(fd, 0);
227     if (fd != EOF)
228     close(fd);
229 kumaneko 2984
230 kumaneko 1995 policy = "allow_read /dev/null if path1.perm=0666";
231 kumaneko 2943 write_domain_policy(policy, 0);
232     fd = open("/dev/null", O_RDONLY);
233     show_result(fd, 1);
234     if (fd != EOF)
235     close(fd);
236     write_domain_policy(policy, 1);
237     fd = open("/dev/null", O_RDONLY);
238     show_result(fd, 0);
239     if (fd != EOF)
240     close(fd);
241 kumaneko 1995
242 kumaneko 1996 policy = "allow_read /dev/null if path1.perm!=0777";
243 kumaneko 2943 write_domain_policy(policy, 0);
244     fd = open("/dev/null", O_RDONLY);
245     show_result(fd, 1);
246     if (fd != EOF)
247     close(fd);
248     write_domain_policy(policy, 1);
249     fd = open("/dev/null", O_RDONLY);
250     show_result(fd, 0);
251     if (fd != EOF)
252     close(fd);
253 kumaneko 1995
254 kumaneko 1996 policy = "allow_read /dev/null if path1.perm=owner_read "
255     "path1.perm=owner_write path1.perm!=owner_execute "
256     "path1.perm=group_read path1.perm=group_write "
257     "path1.perm!=group_execute path1.perm=others_read "
258     "path1.perm=others_write path1.perm!=others_execute "
259     "path1.perm!=setuid path1.perm!=setgid path1.perm!=sticky";
260 kumaneko 2943 write_domain_policy(policy, 0);
261     fd = open("/dev/null", O_RDONLY);
262     show_result(fd, 1);
263     if (fd != EOF)
264     close(fd);
265     write_domain_policy(policy, 1);
266     fd = open("/dev/null", O_RDONLY);
267     show_result(fd, 0);
268     if (fd != EOF)
269     close(fd);
270 kumaneko 1996
271 kumaneko 2943 set_profile(3, "file::mkfifo");
272     policy = "allow_mkfifo /tmp/mknod_fifo_test 0644 "
273 kumaneko 1996 "if path1.parent.perm=01777 path1.parent.perm=sticky "
274     "path1.parent.uid=0 path1.parent.gid=0";
275 kumaneko 2943 write_domain_policy(policy, 0);
276     filename = "/tmp/mknod_fifo_test";
277     show_result(mknod(filename, S_IFIFO | 0644, 0), 1);
278     write_domain_policy(policy, 1);
279     unlink2(filename);
280     show_result(mknod(filename, S_IFIFO | 0644, 0), 0);
281 kumaneko 1996
282 kumaneko 2943 memset(pbuffer, 0, sizeof(pbuffer));
283     memset(&sbuf, 0, sizeof(sbuf));
284     filename = "/dev/null";
285     stat(filename, &sbuf);
286     snprintf(pbuffer, sizeof(pbuffer) - 1,
287     "allow_write %s if path1.major=%u path1.minor=%u",
288     filename, (unsigned int) MAJOR(sbuf.st_dev),
289     (unsigned int) MINOR(sbuf.st_dev));
290     policy = pbuffer;
291     write_domain_policy(policy, 0);
292     fd = open(filename, O_WRONLY);
293     show_result(fd, 1);
294     if (fd != EOF)
295     close(fd);
296     write_domain_policy(policy, 1);
297     fd = open(filename, O_WRONLY);
298     show_result(fd, 0);
299     if (fd != EOF)
300     close(fd);
301 kumaneko 1996
302 kumaneko 2563 policy = "allow_read/write /tmp/fifo if path1.type=fifo";
303     mkfifo2("/tmp/fifo");
304 kumaneko 2943 write_domain_policy(policy, 0);
305     fd = open("/tmp/fifo", O_RDWR);
306     show_result(fd, 1);
307     if (fd != EOF)
308     close(fd);
309     write_domain_policy(policy, 1);
310     fd = open("/tmp/fifo", O_RDWR);
311     show_result(fd, 0);
312     if (fd != EOF)
313     close(fd);
314 kumaneko 1996
315 kumaneko 1664 policy = "allow_read /dev/null if path1.parent.ino=path1.parent.ino";
316 kumaneko 2943 write_domain_policy(policy, 0);
317     fd = open("/dev/null", O_RDONLY);
318     show_result(fd, 1);
319     if (fd != EOF)
320     close(fd);
321     write_domain_policy(policy, 1);
322     fd = open("/dev/null", O_RDONLY);
323     show_result(fd, 0);
324     if (fd != EOF)
325     close(fd);
326 kumaneko 1066
327 kumaneko 1664 policy = "allow_write /dev/null if path1.uid=path1.gid";
328 kumaneko 2943 write_domain_policy(policy, 0);
329     fd = open("/dev/null", O_WRONLY);
330     show_result(fd, 1);
331     if (fd != EOF)
332     close(fd);
333     write_domain_policy(policy, 1);
334     fd = open("/dev/null", O_WRONLY);
335     show_result(fd, 0);
336     if (fd != EOF)
337     close(fd);
338 kumaneko 1066
339 kumaneko 1664 policy = "allow_read/write /dev/null if task.uid=path1.parent.uid";
340 kumaneko 2943 write_domain_policy(policy, 0);
341     fd = open("/dev/null", O_RDWR);
342     show_result(fd, 1);
343     if (fd != EOF)
344     close(fd);
345     write_domain_policy(policy, 1);
346     fd = open("/dev/null", O_RDWR);
347     show_result(fd, 0);
348     if (fd != EOF)
349     close(fd);
350 kumaneko 1066
351 kumaneko 2984 policy = "allow_create /tmp/open_test 0644 "
352     "if path1.parent.uid=task.uid";
353 kumaneko 2943 write_domain_policy(policy, 0);
354     policy = "allow_write /tmp/open_test if path1.parent.uid=0";
355     write_domain_policy(policy, 0);
356     fd = open("/tmp/open_test", O_WRONLY | O_CREAT | O_EXCL, 0644);
357     show_result(fd, 1);
358     if (fd != EOF)
359     close(fd);
360     unlink2("/tmp/open_test");
361     write_domain_policy(policy, 1);
362     fd = open("/tmp/open_test", O_WRONLY | O_CREAT | O_EXCL, 0644);
363     show_result(fd, 0);
364     if (fd != EOF)
365     close(fd);
366     unlink2("/tmp/open_test");
367 kumaneko 1066
368 kumaneko 2943 policy = "allow_create /tmp/open_test 0644 "
369     "if path1.parent.uid=task.uid";
370     write_domain_policy(policy, 1);
371    
372 kumaneko 1664 policy = "allow_write /tmp/open_test if task.uid=0 path1.ino!=0";
373 kumaneko 2943 write_domain_policy(policy, 0);
374     policy = "allow_create /tmp/open_test 0644 if 0=0";
375     write_domain_policy(policy, 0);
376     fd = open("/tmp/open_test", O_WRONLY | O_CREAT | O_EXCL, 0644);
377     show_result(fd, 1);
378     if (fd != EOF)
379     close(fd);
380     unlink2("/tmp/open_test");
381     write_domain_policy(policy, 1);
382     fd = open("/tmp/open_test", O_WRONLY | O_CREAT | O_EXCL, 0644);
383     show_result(fd, 0);
384     if (fd != EOF)
385     close(fd);
386     unlink2("/tmp/open_test");
387     policy = "allow_write /tmp/open_test if task.uid=0 path1.ino!=0";
388     write_domain_policy(policy, 1);
389 kumaneko 1066
390     filename = "/tmp/truncate_test";
391     create2(filename);
392    
393 kumaneko 1664 policy = "allow_truncate /tmp/truncate_test if task.uid=path1.uid";
394 kumaneko 2943 write_domain_policy(policy, 0);
395     policy = "allow_write /tmp/truncate_test if 1!=100-1000000";
396     write_domain_policy(policy, 0);
397     fd = open(filename, O_WRONLY | O_TRUNC);
398     show_result(fd, 1);
399     if (fd != EOF)
400     close(fd);
401     write_domain_policy(policy, 1);
402     fd = open(filename, O_WRONLY | O_TRUNC);
403     show_result(fd, 0);
404     if (fd != EOF)
405     close(fd);
406     policy = "allow_truncate /tmp/truncate_test "
407     "if task.uid=path1.uid";
408     write_domain_policy(policy, 1);
409 kumaneko 1066
410     policy = "allow_write /tmp/truncate_test";
411 kumaneko 2943 write_domain_policy(policy, 0);
412     policy = "allow_truncate /tmp/truncate_test";
413     write_domain_policy(policy, 0);
414     fd = open(filename, O_WRONLY | O_TRUNC);
415     show_result(fd, 1);
416     if (fd != EOF)
417     close(fd);
418     write_domain_policy(policy, 1);
419     fd = open(filename, O_WRONLY | O_TRUNC);
420     show_result(fd, 0);
421     if (fd != EOF)
422     close(fd);
423     policy = "allow_write /tmp/truncate_test";
424     write_domain_policy(policy, 1);
425 kumaneko 1726
426 kumaneko 1066 policy = "allow_truncate /tmp/truncate_test";
427 kumaneko 2943 write_domain_policy(policy, 0);
428     show_result(truncate(filename, 0), 1);
429     write_domain_policy(policy, 1);
430     show_result(truncate(filename, 0), 0);
431 kumaneko 1066
432     policy = "allow_truncate /tmp/truncate_test";
433 kumaneko 2943 write_domain_policy(policy, 0);
434     set_profile(0, "file::open");
435     fd = open(filename, O_WRONLY);
436     set_profile(3, "file::open");
437     show_result(ftruncate(fd, 0), 1);
438     write_domain_policy(policy, 1);
439     show_result(ftruncate(fd, 0), 0);
440     if (fd != EOF)
441     close(fd);
442 kumaneko 1726
443 kumaneko 1066 unlink2(filename);
444 kumaneko 1726
445 kumaneko 2943 policy = "allow_create /tmp/mknod_reg_test 0644";
446     write_domain_policy(policy, 0);
447     filename = "/tmp/mknod_reg_test";
448     show_result(mknod(filename, S_IFREG | 0644, 0), 1);
449     write_domain_policy(policy, 1);
450     unlink2(filename);
451     show_result(mknod(filename, S_IFREG | 0644, 0), 0);
452 kumaneko 1066
453 kumaneko 2943 policy = "allow_mkchar /tmp/mknod_chr_test 0644 1 3";
454     write_domain_policy(policy, 0);
455     filename = "/tmp/mknod_chr_test";
456     show_result(mknod(filename, S_IFCHR | 0644, MKDEV(1, 3)), 1);
457     write_domain_policy(policy, 1);
458     unlink2(filename);
459     show_result(mknod(filename, S_IFCHR | 0644, MKDEV(1, 3)), 0);
460 kumaneko 1066
461 kumaneko 2943 policy = "allow_mkblock /tmp/mknod_blk_test 0644 1 0";
462     write_domain_policy(policy, 0);
463     filename = "/tmp/mknod_blk_test";
464     show_result(mknod(filename, S_IFBLK | 0644, MKDEV(1, 0)), 1);
465     write_domain_policy(policy, 1);
466     unlink2(filename);
467     show_result(mknod(filename, S_IFBLK | 0644, MKDEV(1, 0)), 0);
468 kumaneko 1066
469 kumaneko 2943 policy = "allow_mkfifo /tmp/mknod_fifo_test 0644";
470     write_domain_policy(policy, 0);
471     filename = "/tmp/mknod_fifo_test";
472     show_result(mknod(filename, S_IFIFO | 0644, 0), 1);
473     write_domain_policy(policy, 1);
474     unlink2(filename);
475     show_result(mknod(filename, S_IFIFO | 0644, 0), 0);
476 kumaneko 1066
477 kumaneko 2943 policy = "allow_mksock /tmp/mknod_sock_test 0644";
478     write_domain_policy(policy, 0);
479     filename = "/tmp/mknod_sock_test";
480     show_result(mknod(filename, S_IFSOCK | 0644, 0), 1);
481     write_domain_policy(policy, 1);
482     unlink2(filename);
483     show_result(mknod(filename, S_IFSOCK | 0644, 0), 0);
484 kumaneko 1726
485 kumaneko 2943 policy = "allow_mkdir /tmp/mkdir_test/ 0600";
486     write_domain_policy(policy, 0);
487     filename = "/tmp/mkdir_test";
488     show_result(mkdir(filename, 0600), 1);
489     write_domain_policy(policy, 1);
490     rmdir2(filename);
491     show_result(mkdir(filename, 0600), 0);
492 kumaneko 1726
493 kumaneko 1066 policy = "allow_rmdir /tmp/rmdir_test/";
494 kumaneko 2943 write_domain_policy(policy, 0);
495     filename = "/tmp/rmdir_test";
496     mkdir2(filename);
497     show_result(rmdir(filename), 1);
498     write_domain_policy(policy, 1);
499     mkdir2(filename);
500     show_result(rmdir(filename), 0);
501     rmdir2(filename);
502 kumaneko 1726
503 kumaneko 1066 policy = "allow_unlink /tmp/unlink_test";
504 kumaneko 2943 write_domain_policy(policy, 0);
505     filename = "/tmp/unlink_test";
506     create2(filename);
507     show_result(unlink(filename), 1);
508     write_domain_policy(policy, 1);
509     create2(filename);
510     show_result(unlink(filename), 0);
511     unlink2(filename);
512 kumaneko 1726
513 kumaneko 1066 policy = "allow_symlink /tmp/symlink_source_test";
514 kumaneko 2943 write_domain_policy(policy, 0);
515     filename = "/tmp/symlink_source_test";
516     show_result(symlink("/tmp/symlink_dest_test", filename), 1);
517     write_domain_policy(policy, 1);
518     unlink2(filename);
519     show_result(symlink("/tmp/symlink_dest_test", filename), 0);
520 kumaneko 1726
521 kumaneko 2574 policy = "allow_symlink /tmp/symlink_source_test "
522     "if symlink.target=\"/tmp/symlink_\\*_test\"";
523 kumaneko 2943 write_domain_policy(policy, 0);
524     filename = "/tmp/symlink_source_test";
525     show_result(symlink("/tmp/symlink_dest_test", filename), 1);
526     write_domain_policy(policy, 1);
527     unlink2(filename);
528     show_result(symlink("/tmp/symlink_dest_test", filename), 0);
529 kumaneko 2563
530 kumaneko 2574 policy = "allow_symlink /tmp/symlink_source_test "
531     "if task.uid=0 symlink.target=\"/tmp/symlink_\\*_test\"";
532 kumaneko 2943 write_domain_policy(policy, 0);
533     filename = "/tmp/symlink_source_test";
534     show_result(symlink("/tmp/symlink_dest_test", filename), 1);
535     write_domain_policy(policy, 1);
536     unlink2(filename);
537     show_result(symlink("/tmp/symlink_dest_test", filename), 0);
538 kumaneko 2563
539 kumaneko 2574 policy = "allow_symlink /tmp/symlink_source_test "
540     "if symlink.target!=\"\\*\"";
541 kumaneko 2943 write_domain_policy(policy, 0);
542     filename = "/tmp/symlink_source_test";
543     show_result(symlink("/tmp/symlink_dest_test", filename), 1);
544     write_domain_policy(policy, 1);
545     unlink2(filename);
546     show_result(symlink("/tmp/symlink_dest_test", filename), 0);
547 kumaneko 2563
548 kumaneko 2574 policy = "allow_symlink /tmp/symlink_source_test "
549     "if symlink.target!=\"/tmp/symlink_\\*_test\"";
550 kumaneko 2943 write_domain_policy(policy, 0);
551     filename = "/tmp/symlink_source_test";
552     show_result(symlink("/tmp/symlink_dest_test", filename), 0);
553     write_domain_policy(policy, 1);
554     unlink2(filename);
555     show_result(symlink("/tmp/symlink_dest_test", filename), 0);
556 kumaneko 2563
557 kumaneko 1066 policy = "allow_link /tmp/link_source_test /tmp/link_dest_test";
558 kumaneko 2943 write_domain_policy(policy, 0);
559     filename = "/tmp/link_source_test";
560     create2(filename);
561     show_result(link(filename, "/tmp/link_dest_test"), 1);
562     write_domain_policy(policy, 1);
563     unlink2("/tmp/link_dest_test");
564     show_result(link(filename, "/tmp/link_dest_test"), 0);
565     unlink2(filename);
566 kumaneko 1066
567     policy = "allow_rename /tmp/rename_source_test /tmp/rename_dest_test";
568 kumaneko 2943 write_domain_policy(policy, 0);
569     filename = "/tmp/rename_source_test";
570     create2(filename);
571     show_result(rename(filename, "/tmp/rename_dest_test"), 1);
572     write_domain_policy(policy, 1);
573     unlink2("/tmp/rename_dest_test");
574     create2(filename);
575     show_result(rename(filename, "/tmp/rename_dest_test"), 0);
576     unlink2(filename);
577 kumaneko 1066
578 kumaneko 2943 policy = "allow_mksock /tmp/socket_test 0755";
579     write_domain_policy(policy, 0);
580     filename = "/tmp/socket_test";
581     memset(&addr, 0, sizeof(addr));
582     addr.sun_family = AF_UNIX;
583     strncpy(addr.sun_path, filename, sizeof(addr.sun_path) - 1);
584     fd = socket(AF_UNIX, SOCK_STREAM, 0);
585     show_result(bind(fd, (struct sockaddr *) &addr, sizeof(addr)),
586     1);
587     if (fd != EOF)
588     close(fd);
589     write_domain_policy(policy, 1);
590     unlink2(filename);
591     fd = socket(AF_UNIX, SOCK_STREAM, 0);
592     show_result(bind(fd, (struct sockaddr *) &addr, sizeof(addr)),
593     0);
594     if (fd != EOF)
595     close(fd);
596 kumaneko 1067
597     filename = "/tmp/rewrite_test";
598     create2(filename);
599     policy = "allow_read/write /tmp/rewrite_test";
600 kumaneko 2943 write_domain_policy(policy, 0);
601     write_exception_policy("deny_rewrite /tmp/rewrite_test", 0);
602     policy = "allow_truncate /tmp/rewrite_test";
603     write_domain_policy(policy, 0);
604 kumaneko 1067
605 kumaneko 2943 fd = open(filename, O_RDONLY);
606     show_result(fd, 1);
607     if (fd != EOF)
608     close(fd);
609 kumaneko 2984
610 kumaneko 2943 fd = open(filename, O_WRONLY | O_APPEND);
611     show_result(fd, 1);
612     if (fd != EOF)
613     close(fd);
614 kumaneko 2984
615 kumaneko 2943 fd = open(filename, O_WRONLY);
616     show_result(fd, 0);
617     if (fd != EOF)
618     close(fd);
619 kumaneko 2984
620 kumaneko 2943 fd = open(filename, O_WRONLY | O_TRUNC);
621     show_result(fd, 0);
622     if (fd != EOF)
623     close(fd);
624 kumaneko 2984
625 kumaneko 2943 fd = open(filename, O_WRONLY | O_TRUNC | O_APPEND);
626     show_result(fd, 0);
627     if (fd != EOF)
628     close(fd);
629 kumaneko 2984
630 kumaneko 2943 show_result(truncate(filename, 0), 0);
631 kumaneko 2984
632 kumaneko 2943 set_profile(0, "file::open");
633     fd = open(filename, O_WRONLY | O_APPEND);
634     set_profile(3, "file::open");
635     show_result(ftruncate(fd, 0), 0);
636 kumaneko 2984
637 kumaneko 2943 show_result(fcntl(fd, F_SETFL,
638     fcntl(fd, F_GETFL) & ~O_APPEND), 0);
639     if (fd != EOF)
640     close(fd);
641 kumaneko 2984
642 kumaneko 2943 write_domain_policy(policy, 1);
643 kumaneko 1726
644 kumaneko 2943 policy = "allow_read/write /tmp/rewrite_test";
645     write_domain_policy(policy, 1);
646     write_exception_policy("deny_rewrite /tmp/rewrite_test", 1);
647 kumaneko 1726
648 kumaneko 1067 unlink2(filename);
649 kumaneko 2301
650 kumaneko 2943 policy = "allow_ioctl socket:[family=2:type=2:protocol=17] "
651     "35122-35124 if task.uid=0";
652     write_domain_policy(policy, 0);
653     fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP);
654     memset(&ifreq, 0, sizeof(ifreq));
655     snprintf(ifreq.ifr_name, sizeof(ifreq.ifr_name) - 1,
656     "lo");
657     show_result(ioctl(fd, 35123, &ifreq), 1);
658     write_domain_policy(policy, 1);
659     policy = "allow_ioctl "
660     "socket:[family=2:type=2:protocol=17] 0-35122";
661     write_domain_policy(policy, 0);
662     show_result(ioctl(fd, 35123, &ifreq), 0);
663     write_domain_policy(policy, 1);
664     if (fd != EOF)
665     close(fd);
666 kumaneko 1066 }
667    
668 kumaneko 1726 int main(int argc, char *argv[])
669     {
670 kumaneko 1744 ccs_test_init();
671 kumaneko 2908 fprintf(domain_fp, "%s /bin/true\n", self_domain);
672     fprintf(domain_fp, "use_profile 255\n");
673     fprintf(domain_fp, "select pid=%u\n", pid);
674 kumaneko 3059 fprintf(profile_fp, "255-PREFERENCE::audit={ max_reject_log=1024 }\n");
675 kumaneko 1744 stage_file_test();
676 kumaneko 2908 fprintf(domain_fp, "use_profile 0\n");
677 kumaneko 1744 clear_status();
678 kumaneko 1066 return 0;
679     }

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