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

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 5495 - (hide annotations) (download) (as text)
Wed Sep 28 11:34:40 2011 UTC (12 years, 7 months ago) by kumaneko
File MIME type: text/x-csrc
File size: 18601 byte(s)


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

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