brintos

brintos / llvm-project-archived public Read only

0
0
Text · 902 B · a4da773 Raw
29 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#include <stddef.h>5#include <stdint.h>6#include <stdio.h>7 8// Test for libFuzzer's "equivalence" fuzzing, part B.9extern "C" void LLVMFuzzerAnnounceOutput(const uint8_t *Data, size_t Size);10extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {11  // fprintf(stderr, "B %zd\n", Size);12  uint8_t Result[50];13  if (Size > 50) Size = 50;14  for (size_t i = 0; i < Size; i++)15    Result[Size - i - 1] = Data[i];16 17  // Be a bit different from EquivalenceATest18  if (Size > 10 && Data[5] == 'B' && Data[6] == 'C' && Data[7] == 'D') {19    static int c;20    if (!c)21      fprintf(stderr, "ZZZZZZZ\n");22    c = 1;23    Result[2]++;24  }25 26  LLVMFuzzerAnnounceOutput(Result, Size);27  return 0;28}29