brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.0 KiB · 1520e82 Raw
41 lines · cpp
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-exception4 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