Skip to content

Commit 07e9e2e

Browse files
committed
Add fork_canary.c
1 parent 117b58b commit 07e9e2e

File tree

2 files changed

+38
-0
lines changed

2 files changed

+38
-0
lines changed

fork_canary

16.7 KB
Binary file not shown.

fork_canary.c

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
#include <stdio.h>
2+
#include <stdlib.h>
3+
#include <unistd.h>
4+
5+
// gcc fork_canary.c -o ./fork_canary
6+
int main(int argc, char **argv) {
7+
size_t index;
8+
size_t *i = &index;
9+
int canary_offset = 0xd;
10+
11+
// fork()
12+
pid_t pid = fork();
13+
if (pid == -1) {
14+
perror("fork");
15+
exit(EXIT_FAILURE);
16+
}
17+
18+
// if child
19+
if (pid == 0) {
20+
printf("child canary?");
21+
scanf("%p", &index);
22+
23+
if (index == i[canary_offset])
24+
puts("canary!");
25+
else
26+
puts("not canary!");
27+
28+
} else {
29+
// if parent
30+
printf("parent canary: %p\n", i[canary_offset]);
31+
// wait for child
32+
int status;
33+
waitpid(pid, &status, 0);
34+
}
35+
36+
char *buf[10];
37+
gets(buf);
38+
}

0 commit comments

Comments
 (0)