12c3e0051c31c3f5b2328b447eadf1cf9c4427442Pirama Arumuga Nainar// Simple test for a fuzzer. The fuzzer must find several narrow ranges.
22c3e0051c31c3f5b2328b447eadf1cf9c4427442Pirama Arumuga Nainar#include <cstdint>
32c3e0051c31c3f5b2328b447eadf1cf9c4427442Pirama Arumuga Nainar#include <cstdlib>
42c3e0051c31c3f5b2328b447eadf1cf9c4427442Pirama Arumuga Nainar#include <cstring>
52c3e0051c31c3f5b2328b447eadf1cf9c4427442Pirama Arumuga Nainar#include <cstdio>
62c3e0051c31c3f5b2328b447eadf1cf9c4427442Pirama Arumuga Nainar
72c3e0051c31c3f5b2328b447eadf1cf9c4427442Pirama Arumuga Nainarextern "C" void TestOneInput(const uint8_t *Data, size_t Size) {
82c3e0051c31c3f5b2328b447eadf1cf9c4427442Pirama Arumuga Nainar  if (Size < 14) return;
92c3e0051c31c3f5b2328b447eadf1cf9c4427442Pirama Arumuga Nainar  uint64_t x = 0;
102c3e0051c31c3f5b2328b447eadf1cf9c4427442Pirama Arumuga Nainar  int64_t  y = 0;
112c3e0051c31c3f5b2328b447eadf1cf9c4427442Pirama Arumuga Nainar  int z = 0;
122c3e0051c31c3f5b2328b447eadf1cf9c4427442Pirama Arumuga Nainar  unsigned short a = 0;
132c3e0051c31c3f5b2328b447eadf1cf9c4427442Pirama Arumuga Nainar  memcpy(&x, Data, 8);
142c3e0051c31c3f5b2328b447eadf1cf9c4427442Pirama Arumuga Nainar  memcpy(&y, Data + Size - 8, 8);
152c3e0051c31c3f5b2328b447eadf1cf9c4427442Pirama Arumuga Nainar  memcpy(&z, Data + Size / 2, sizeof(z));
162c3e0051c31c3f5b2328b447eadf1cf9c4427442Pirama Arumuga Nainar  memcpy(&a, Data + Size / 2 + 4, sizeof(a));
172c3e0051c31c3f5b2328b447eadf1cf9c4427442Pirama Arumuga Nainar
182c3e0051c31c3f5b2328b447eadf1cf9c4427442Pirama Arumuga Nainar  if (x > 1234567890 &&
192c3e0051c31c3f5b2328b447eadf1cf9c4427442Pirama Arumuga Nainar      x < 1234567895 &&
202c3e0051c31c3f5b2328b447eadf1cf9c4427442Pirama Arumuga Nainar      y >= 987654321 &&
212c3e0051c31c3f5b2328b447eadf1cf9c4427442Pirama Arumuga Nainar      y <= 987654325 &&
222c3e0051c31c3f5b2328b447eadf1cf9c4427442Pirama Arumuga Nainar      z < -10000 &&
232c3e0051c31c3f5b2328b447eadf1cf9c4427442Pirama Arumuga Nainar      z >= -10005 &&
242c3e0051c31c3f5b2328b447eadf1cf9c4427442Pirama Arumuga Nainar      z != -10003 &&
252c3e0051c31c3f5b2328b447eadf1cf9c4427442Pirama Arumuga Nainar      a == 4242) {
262c3e0051c31c3f5b2328b447eadf1cf9c4427442Pirama Arumuga Nainar    fprintf(stderr, "Found the target: size %zd (%zd, %zd, %d, %d), exiting.\n",
272c3e0051c31c3f5b2328b447eadf1cf9c4427442Pirama Arumuga Nainar            Size, x, y, z, a);
282c3e0051c31c3f5b2328b447eadf1cf9c4427442Pirama Arumuga Nainar    exit(1);
292c3e0051c31c3f5b2328b447eadf1cf9c4427442Pirama Arumuga Nainar  }
302c3e0051c31c3f5b2328b447eadf1cf9c4427442Pirama Arumuga Nainar}
31