brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.1 KiB · 4c97147 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 cutom mutator that results in long sequences of mutations.6#include <assert.h>7#include <cstddef>8#include <cstdint>9#include <cstdlib>10#include <iostream>11#include <ostream>12 13#include "FuzzerInterface.h"14 15static volatile int Sink;16 17extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {18  assert(Data);19  if (Size > 0 && Data[0] == 'H') {20    Sink = 1;21    if (Size > 1 && Data[1] == 'i') {22      Sink = 2;23      if (Size > 2 && Data[2] == '!') {24        std::cout << "BINGO; Found the target, exiting\n"25                  << std::flush;26        exit(1);27      }28    }29  }30  return 0;31}32 33extern "C" size_t LLVMFuzzerCustomMutator(uint8_t *Data, size_t Size,34                                          size_t MaxSize, unsigned int Seed) {35  // Run this 25 times to generate a large mutation sequence.36  for (size_t i = 0; i < 25; i++) {37    LLVMFuzzerMutate(Data, Size, MaxSize);38  }39  return LLVMFuzzerMutate(Data, Size, MaxSize);40}41