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