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