// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.

// Simple test for a fuzzer. The fuzzer must find several narrow ranges.
#include <cstdint>
#include <cstdlib>
#include <cstring>
#include <cstdio>

extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
  if (Size < 14) return 0;
  uint64_t x = 0;
  int64_t  y = 0;
  int z = 0;
  unsigned short a = 0;
  memcpy(&x, Data, 8);
  memcpy(&y, Data + Size - 8, 8);
  memcpy(&z, Data + Size / 2, sizeof(z));
  memcpy(&a, Data + Size / 2 + 4, sizeof(a));

  if (x > 1234567890 &&
      x < 1234567895 &&
      y >= 987654321 &&
      y <= 987654325 &&
      z < -10000 &&
      z >= -10005 &&
      z != -10003 &&
      a == 4242) {
    fprintf(stderr, "BINGO; Found the target: size %zd (%zd, %zd, %d, %d), exiting.\n",
            Size, x, y, z, a);
    exit(1);
  }
  return 0;
}
