]> granicus.if.org Git - strace/blob - tests/mknod.c
tests: add prctl-seccomp-strict.test
[strace] / tests / mknod.c
1 #include "tests.h"
2 #include <sys/syscall.h>
3
4 #ifdef __NR_mknod
5
6 # include <errno.h>
7 # include <stdio.h>
8 # include <sys/stat.h>
9 # include <unistd.h>
10
11 # ifdef MAJOR_IN_SYSMACROS
12 #  include <sys/sysmacros.h>
13 # endif
14 # ifdef MAJOR_IN_MKDEV
15 #  include <sys/mkdev.h>
16 # endif
17
18 # define TMP_FILE "mknod"
19
20 int
21 main(void)
22 {
23         int rc = syscall(__NR_mknod, TMP_FILE, S_IFREG|0600, 0);
24         printf("mknod(\"%s\", S_IFREG|0600) = %d %s (%m)\n",
25                TMP_FILE, rc,
26                errno == ENOSYS ? "ENOSYS" : "EEXIST");
27
28         const unsigned long dev =
29                 (unsigned long) 0xdeadbeef00000000 | makedev(1, 7);
30         rc = syscall(__NR_mknod, TMP_FILE, S_IFCHR | 0400, dev);
31         printf("mknod(\"%s\", S_IFCHR|0400, makedev(1, 7)) = %d %s (%m)\n",
32                TMP_FILE, rc,
33                errno == ENOSYS ? "ENOSYS" : "EEXIST");
34
35         puts("+++ exited with 0 +++");
36         return 0;
37 }
38
39 #else
40
41 SKIP_MAIN_UNDEFINED("__NR_mknod")
42
43 #endif