aboutsummaryrefslogtreecommitdiff
path: root/examples/persistent_demo/persistent_demo_new.c
diff options
context:
space:
mode:
authorAndrea Fioraldi <andreafioraldi@gmail.com>2020-12-08 22:43:05 +0100
committerAndrea Fioraldi <andreafioraldi@gmail.com>2020-12-08 22:43:05 +0100
commitad29eef2712f8d0b69c1acd79c6a5dfb4e2cc7f8 (patch)
treef74be06e8d1834ada6abe3daf40744e134cb9e3c /examples/persistent_demo/persistent_demo_new.c
parentc70b7ffd80ee95cdf3bf1276bfbd4a590e74d3f1 (diff)
parent6fb74342b8a3e7aa62e9e0cfe79bd84d9076a275 (diff)
downloadafl++-ad29eef2712f8d0b69c1acd79c6a5dfb4e2cc7f8.tar.gz
Merge branch 'dev' of github.com:AFLplusplus/AFLplusplus into dev
Diffstat (limited to 'examples/persistent_demo/persistent_demo_new.c')
-rw-r--r--examples/persistent_demo/persistent_demo_new.c117
1 files changed, 0 insertions, 117 deletions
diff --git a/examples/persistent_demo/persistent_demo_new.c b/examples/persistent_demo/persistent_demo_new.c
deleted file mode 100644
index b8b4cda0..00000000
--- a/examples/persistent_demo/persistent_demo_new.c
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- american fuzzy lop++ - persistent mode example
- --------------------------------------------
-
- Originally written by Michal Zalewski
-
- Copyright 2015 Google Inc. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at:
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- This file demonstrates the high-performance "persistent mode" that may be
- suitable for fuzzing certain fast and well-behaved libraries, provided that
- they are stateless or that their internal state can be easily reset
- across runs.
-
- To make this work, the library and this shim need to be compiled in LLVM
- mode using afl-clang-fast (other compiler wrappers will *not* work).
-
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <signal.h>
-#include <string.h>
-
-/* this lets the source compile without afl-clang-fast/lto */
-#ifndef __AFL_FUZZ_TESTCASE_LEN
-
-ssize_t fuzz_len;
-unsigned char fuzz_buf[1024000];
-
- #define __AFL_FUZZ_TESTCASE_LEN fuzz_len
- #define __AFL_FUZZ_TESTCASE_BUF fuzz_buf
- #define __AFL_FUZZ_INIT() void sync(void);
- #define __AFL_LOOP(x) \
- ((fuzz_len = read(0, fuzz_buf, sizeof(fuzz_buf))) > 0 ? 1 : 0)
- #define __AFL_INIT() sync()
-
-#endif
-
-__AFL_FUZZ_INIT();
-
-/* Main entry point. */
-
-int main(int argc, char **argv) {
-
- ssize_t len; /* how much input did we read? */
- unsigned char *buf; /* test case buffer pointer */
-
- /* The number passed to __AFL_LOOP() controls the maximum number of
- iterations before the loop exits and the program is allowed to
- terminate normally. This limits the impact of accidental memory leaks
- and similar hiccups. */
-
- __AFL_INIT();
- buf = __AFL_FUZZ_TESTCASE_BUF;
-
- while (__AFL_LOOP(1000)) { // increase if you have good stability
-
- len = __AFL_FUZZ_TESTCASE_LEN;
-
- fprintf(stderr, "input: %zd \"%s\"\n", len, buf);
-
- /* do we have enough data? */
- if (len < 8) continue;
-
- if (strcmp((char *)buf, "thisisateststring") == 0) printf("teststring\n");
-
- if (buf[0] == 'f') {
-
- printf("one\n");
- if (buf[1] == 'o') {
-
- printf("two\n");
- if (buf[2] == 'o') {
-
- printf("three\n");
- if (buf[3] == '!') {
-
- printf("four\n");
- if (buf[4] == '!') {
-
- printf("five\n");
- if (buf[6] == '!') {
-
- printf("six\n");
- abort();
-
- }
-
- }
-
- }
-
- }
-
- }
-
- }
-
- /*** END PLACEHOLDER CODE ***/
-
- }
-
- /* Once the loop is exited, terminate normally - AFL will restart the process
- when this happens, with a clean slate when it comes to allocated memory,
- leftover file descriptors, etc. */
-
- return 0;
-
-}
-