diff options
author | Dominik Maier <domenukk@gmail.com> | 2020-07-16 02:17:05 +0200 |
---|---|---|
committer | Dominik Maier <domenukk@gmail.com> | 2020-07-16 02:17:05 +0200 |
commit | f465a75b6592e4c30b0465f63beda166a8e09045 (patch) | |
tree | ea72e8c66e2cb3842e342b2ab9cb1b1558c22fa1 /examples/defork/forking_target.c | |
parent | 4314e59af9a2224443fa38ac8145eba305189d97 (diff) | |
download | afl++-f465a75b6592e4c30b0465f63beda166a8e09045.tar.gz |
added initial defork example
Diffstat (limited to 'examples/defork/forking_target.c')
-rw-r--r-- | examples/defork/forking_target.c | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/examples/defork/forking_target.c b/examples/defork/forking_target.c new file mode 100644 index 00000000..ff1d6e37 --- /dev/null +++ b/examples/defork/forking_target.c @@ -0,0 +1,46 @@ +#include <stdio.h> +#include <unistd.h> +#include <stdint.h> +#include <sys/types.h> + +/* This is an example target for defork.c - fuzz using +``` +mkdir in; echo a > ./in/a +AFL_PRELOAD=./defork64.so ../../afl-fuzz -i in -o out -- ./forking_target @@ +``` +*/ + +int main(int argc, char **argv) { + + if (argc < 2) { + + printf("Example tool to test defork.\nUsage ./forking_target <input>\n"); + return -1; + + } + + pid_t pid = fork(); + if (pid == 0) { + + printf("We're in the child.\n"); + FILE *f = fopen(argv[1], "r"); + char buf[4096]; + fread(buf, 1, 4096, f); + uint32_t offset = buf[100] + (buf[101] << 8); + char test_val = buf[offset]; + return test_val < 100; + + } else if (pid < 0) { + + perror("fork"); + return -1; + + } else { + + printf("We are in the parent - defork didn't work! :( (pid=%d)\n", (int) pid); + + } + + return 0; + +} |