]> granicus.if.org Git - strace/blob - test/skodic.c
Add argument to tprint_iov() specifying whether to decode each iovec
[strace] / test / skodic.c
1 /* This demonstrates races: kernel may actually open other file then
2  * you read at strace output. Create /tmp/delme with 10K of zeros and
3  * 666 mode, then run this under strace. If you see open successfull
4  * open of /etc/shadow, you know you've seen a race.
5  */
6
7 #include <stdio.h>
8 #include <stdlib.h>
9 #include <string.h>
10 #include <unistd.h>
11 #include <sys/mman.h>
12 #include <sys/types.h>
13 #include <sys/stat.h>
14 #include <fcntl.h>
15
16 int main(int argc, char *argv[])
17 {
18         /* XXX: x86 specific stuff? */
19         char *c = (char*) 0x94000000;
20         int fd;
21
22         open("/tmp/delme", O_RDWR);
23         mmap(c, 4096, PROT_READ | PROT_WRITE, MAP_FIXED | MAP_SHARED, 3, 0);
24         *c = 0;
25
26         if (fork()) {
27                 while (1) {
28                         strcpy(c, "/etc/passwd");
29                         strcpy(c, "/etc/shadow");
30                 }
31         } else {
32                 while (1)
33                         if ((fd = open(c, 0)) != -1)
34                                 close(fd);
35         }
36
37         return 0;
38 }