1 // This file is distributed under the University of Illinois Open Source
2 // License. See LICENSE.TXT for details.
3 
4 // Simple test for a fuzzer. The fuzzer must find the string "Hi!".
5 #include <cstddef>
6 #include <cstdint>
7 #include <cstdlib>
8 #include <iostream>
9 
10 extern "C" {
11 __attribute__((noinline))
12 void FunctionC(const uint8_t *Data, size_t Size) {
13   if (Size > 3 && Data[3] == 'Z') {
14     static bool PrintedOnce = false;
15     if (!PrintedOnce) {
16       std::cout << "BINGO\n";
17       PrintedOnce = true;
18     }
19   }
20 }
21 
22 __attribute__((noinline))
23 void FunctionB(const uint8_t *Data, size_t Size) {
24   if (Size > 2 && Data[2] == 'Z')
25     FunctionC(Data, Size);
26 }
27 __attribute__((noinline))
28 void FunctionA(const uint8_t *Data, size_t Size) {
29   if (Size > 1 && Data[1] == 'U')
30     FunctionB(Data, Size);
31 }
32 }
33 
34 extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
35   if (Size > 0 && Data[0] == 'F')
36     FunctionA(Data, Size);
37   return 0;
38 }
39 
40