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

Subversion リポジトリの参照

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 4893 - (show annotations) (download) (as text)
Thu Apr 14 07:25:32 2011 UTC (13 years ago) by kumaneko
File MIME type: text/x-csrc
File size: 18600 byte(s)


1 /*
2 * ccs_new_file_test.c
3 *
4 * Copyright (C) 2005-2011 NTT DATA CORPORATION
5 *
6 * Version: 1.8.1 2011/04/01
7 *
8 * 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 */
21 #include "include.h"
22 #include <linux/elf.h>
23
24 static void make_elf_lib(void)
25 {
26 static const struct elf32_phdr eph = {
27 .p_type = PT_LOAD,
28 .p_offset = 4096,
29 .p_filesz = 1,
30 };
31 static const struct elf32_hdr eh = {
32 .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 static const char *policy = "";
50
51 static void show_result(int result, char should_success)
52 {
53 int err = errno;
54 printf("%s : ", policy);
55 if (should_success) {
56 if (result != EOF)
57 printf("OK\n");
58 else
59 printf("FAILED: %s\n", strerror(err));
60 } else {
61 if (result == EOF) {
62 if (err == EPERM)
63 printf("OK: Permission denied.\n");
64 else
65 printf("FAILED: %s\n", strerror(err));
66 } else {
67 printf("BUG: didn't fail.\n");
68 }
69 }
70 }
71
72 static void create2(const char *pathname)
73 {
74 set_profile(0, "file::create");
75 set_profile(0, "file::open");
76 close(creat(pathname, 0600));
77 set_profile(3, "file::create");
78 set_profile(3, "file::open");
79 errno = 0;
80 }
81
82 static void mkdir2(const char *pathname)
83 {
84 set_profile(0, "file::mkdir");
85 mkdir(pathname, 0600);
86 set_profile(3, "file::mkdir");
87 errno = 0;
88 }
89
90 static void unlink2(const char *pathname)
91 {
92 set_profile(0, "file::unlink");
93 unlink(pathname);
94 set_profile(3, "file::unlink");
95 errno = 0;
96 }
97
98 static void rmdir2(const char *pathname)
99 {
100 set_profile(0, "file::rmdir");
101 rmdir(pathname);
102 set_profile(3, "file::rmdir");
103 errno = 0;
104 }
105
106 static void mkfifo2(const char *pathname)
107 {
108 set_profile(0, "file::mkfifo");
109 mkfifo(pathname, 0600);
110 set_profile(3, "file::mkfifo");
111 errno = 0;
112 }
113
114 static void stage_file_test(void)
115 {
116 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 char *filename = "";
127 int ret_ignored;
128 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 set_profile(3, "file::unmount");
149 set_profile(3, "file::pivot_root");
150
151 policy = "file read proc:/sys/net/ipv4/ip_local_port_range "
152 "task.uid=0 task.gid=0";
153 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
158 policy = "file write proc:/sys/net/ipv4/ip_local_port_range "
159 "task.euid=0 0=0 1-100=10-1000";
160 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
165 policy = "file read proc:/sys/net/ipv4/ip_local_port_range "
166 "1!=10-100";
167 write_domain_policy(policy, 0);
168 policy = "file write proc:/sys/net/ipv4/ip_local_port_range "
169 "1!=10-100";
170 write_domain_policy(policy, 0);
171 show_result(sysctl(name, 3, buffer, &size, buffer, size), 1);
172 policy = "file read proc:/sys/net/ipv4/ip_local_port_range "
173 "1!=10-100";
174 write_domain_policy(policy, 1);
175 policy = "file write proc:/sys/net/ipv4/ip_local_port_range "
176 "1!=10-100";
177 write_domain_policy(policy, 1);
178 show_result(sysctl(name, 3, buffer, &size, buffer, size), 0);
179
180 policy = "file read /tmp/uselib "
181 "path1.uid=0 path1.parent.uid=0 10=10-100";
182 write_domain_policy(policy, 0);
183 show_result(uselib("/tmp/uselib"), 1);
184 write_domain_policy(policy, 1);
185 show_result(uselib("/tmp/uselib"), 0);
186
187 policy = "file execute /bin/true task.uid!=10 path1.parent.uid=0";
188 write_domain_policy(policy, 0);
189 fflush(stdout);
190 fflush(stderr);
191 ret_ignored = pipe(pipe_fd);
192 if (fork() == 0) {
193 execl("/bin/true", "/bin/true", NULL);
194 err = errno;
195 ret_ignored = write(pipe_fd[1], &err, sizeof(err));
196 _exit(0);
197 }
198 close(pipe_fd[1]);
199 ret_ignored = read(pipe_fd[0], &err, sizeof(err));
200 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 ret_ignored = pipe(pipe_fd);
208 if (fork() == 0) {
209 execl("/bin/true", "/bin/true", NULL);
210 err = errno;
211 ret_ignored = write(pipe_fd[1], &err, sizeof(err));
212 _exit(0);
213 }
214 close(pipe_fd[1]);
215 ret_ignored = read(pipe_fd[0], &err, sizeof(err));
216 close(pipe_fd[0]);
217 wait(NULL);
218 errno = err;
219 show_result(err ? EOF : 0, 0);
220
221 policy = "file read /dev/null path1.type=char path1.dev_major=1 "
222 "path1.dev_minor=3";
223 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
234 policy = "file read /dev/null path1.perm=0666";
235 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
246 policy = "file read /dev/null path1.perm!=0777";
247 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
258 policy = "file read /dev/null path1.perm=owner_read "
259 "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 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
275 set_profile(3, "file::mkfifo");
276 policy = "file mkfifo /tmp/mknod_fifo_test 0644 "
277 "path1.parent.perm=01777 path1.parent.perm=sticky "
278 "path1.parent.uid=0 path1.parent.gid=0";
279 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
286 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 "file write %s path1.major=%u path1.minor=%u",
292 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
306 policy = "file read /tmp/fifo path1.type=fifo\t"
307 "file write /tmp/fifo path1.type=fifo";
308 mkfifo2("/tmp/fifo");
309 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
320 policy = "file read /dev/null path1.parent.ino=path1.parent.ino";
321 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
332 policy = "file write /dev/null path1.uid=path1.gid";
333 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
344 policy = "file read /dev/null task.uid=path1.parent.uid\t"
345 "file write /dev/null task.uid=path1.parent.uid";
346 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
357 policy = "file create /tmp/open_test 0644 "
358 "path1.parent.uid=task.uid";
359 write_domain_policy(policy, 0);
360 policy = "file write /tmp/open_test path1.parent.uid=0";
361 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
374 policy = "file create /tmp/open_test 0644 "
375 "path1.parent.uid=task.uid";
376 write_domain_policy(policy, 1);
377
378 policy = "file write /tmp/open_test task.uid=0 path1.ino!=0";
379 write_domain_policy(policy, 0);
380 policy = "file create /tmp/open_test 0644 0=0";
381 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 policy = "file write /tmp/open_test task.uid=0 path1.ino!=0";
394 write_domain_policy(policy, 1);
395
396 filename = "/tmp/truncate_test";
397 create2(filename);
398
399 policy = "file truncate /tmp/truncate_test task.uid=path1.uid";
400 write_domain_policy(policy, 0);
401 policy = "file write /tmp/truncate_test 1!=100-1000000";
402 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 policy = "file truncate /tmp/truncate_test "
413 "task.uid=path1.uid";
414 write_domain_policy(policy, 1);
415
416 policy = "file write /tmp/truncate_test";
417 write_domain_policy(policy, 0);
418 policy = "file truncate /tmp/truncate_test";
419 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 policy = "file write /tmp/truncate_test";
430 write_domain_policy(policy, 1);
431
432 policy = "file truncate /tmp/truncate_test";
433 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
438 policy = "file truncate /tmp/truncate_test";
439 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
449 unlink2(filename);
450
451 policy = "file create /tmp/mknod_reg_test 0644";
452 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
459 policy = "file mkchar /tmp/mknod_chr_test 0644 1 3";
460 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
467 policy = "file mkblock /tmp/mknod_blk_test 0644 1 0";
468 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
475 policy = "file mkfifo /tmp/mknod_fifo_test 0644";
476 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
483 policy = "file mksock /tmp/mknod_sock_test 0644";
484 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
491 policy = "file mkdir /tmp/mkdir_test/ 0600";
492 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
499 policy = "file rmdir /tmp/rmdir_test/";
500 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
509 policy = "file unlink /tmp/unlink_test";
510 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
519 policy = "file symlink /tmp/symlink_source_test";
520 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
527 policy = "file symlink /tmp/symlink_source_test "
528 "symlink.target=\"/tmp/symlink_\\*_test\"";
529 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
536 policy = "file symlink /tmp/symlink_source_test "
537 "task.uid=0 symlink.target=\"/tmp/symlink_\\*_test\"";
538 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
545 policy = "file symlink /tmp/symlink_source_test "
546 "symlink.target!=\"\\*\"";
547 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
554 policy = "file symlink /tmp/symlink_source_test "
555 "symlink.target!=\"/tmp/symlink_\\*_test\"";
556 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
563 policy = "file link /tmp/link_source_test /tmp/link_dest_test";
564 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
573 policy = "file rename /tmp/rename_source_test /tmp/rename_dest_test";
574 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
584 policy = "file mksock /tmp/socket_test 0755";
585 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 unlink2(filename);
603
604 policy = "file ioctl socket:[family=2:type=2:protocol=17] "
605 "35122-35124 task.uid=0";
606 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 policy = "file ioctl "
614 "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 }
621
622 int main(int argc, char *argv[])
623 {
624 ccs_test_init();
625 make_elf_lib();
626 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 fprintf(profile_fp, "255-PREFERENCE={ max_reject_log=1024 }\n");
630 stage_file_test();
631 fprintf(domain_fp, "use_profile 0\n");
632 clear_status();
633 if (0) /* To suppress "defined but not used" warnings. */
634 write_exception_policy("", 0);
635 return 0;
636 }

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