1 | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
2 | // See https://llvm.org/LICENSE.txt for license information. |
3 | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
4 | |
5 | #include <stdint.h> |
6 | #include <stdio.h> |
7 | #include <stdlib.h> |
8 | |
9 | // Dummy functions used to avoid dependency on AFL. |
10 | extern "C" void __afl_manual_init() {} |
11 | |
12 | extern "C" int __afl_persistent_loop(unsigned int N) { |
13 | static int Count = N; |
14 | fprintf(stderr, format: "__afl_persistent_loop called, Count = %d\n" , Count); |
15 | return Count--; |
16 | } |
17 | |
18 | // This declaration exists to prevent the Darwin linker |
19 | // from complaining about this being a missing weak symbol. |
20 | extern "C" int LLVMFuzzerInitialize(int *argc, char ***argv) { |
21 | return 0; |
22 | } |
23 | |
24 | extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) { |
25 | puts(s: "STDOUT MESSAGE" ); |
26 | fflush(stdout); |
27 | fprintf(stderr, format: "STDERR MESSAGE\n" |
28 | "LLVMFuzzerTestOneInput called; Size = %zd\n" , |
29 | Size); |
30 | if (Size < 4) |
31 | return 0; |
32 | |
33 | return Data[Size]; |
34 | } |
35 | |