110ab2aceSGeorge Karpenkov // This file is distributed under the University of Illinois Open Source 210ab2aceSGeorge Karpenkov // License. See LICENSE.TXT for details. 310ab2aceSGeorge Karpenkov 410ab2aceSGeorge Karpenkov // Make sure LLVMFuzzerInitialize is called. 510ab2aceSGeorge Karpenkov #include <assert.h> 610ab2aceSGeorge Karpenkov #include <stddef.h> 710ab2aceSGeorge Karpenkov #include <stdint.h> 810ab2aceSGeorge Karpenkov #include <stdio.h> 910ab2aceSGeorge Karpenkov #include <stdlib.h> 1010ab2aceSGeorge Karpenkov #include <string.h> 1110ab2aceSGeorge Karpenkov 12*02f3ad81SMatt Morehouse static char *argv0 = NULL; 1310ab2aceSGeorge Karpenkov 1410ab2aceSGeorge Karpenkov extern "C" int LLVMFuzzerInitialize(int *argc, char ***argv) { 1510ab2aceSGeorge Karpenkov assert(*argc > 0); 1610ab2aceSGeorge Karpenkov argv0 = **argv; 1710ab2aceSGeorge Karpenkov fprintf(stderr, "LLVMFuzzerInitialize: %s\n", argv0); 1810ab2aceSGeorge Karpenkov return 0; 1910ab2aceSGeorge Karpenkov } 2010ab2aceSGeorge Karpenkov 2110ab2aceSGeorge Karpenkov extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) { 22d3e4b7e2SKostya Serebryany assert(argv0); 23*02f3ad81SMatt Morehouse if (argv0 && Size >= 4 && !memcmp(Data, "fuzz", 4)) { 2410ab2aceSGeorge Karpenkov fprintf(stderr, "BINGO %s\n", argv0); 2510ab2aceSGeorge Karpenkov exit(1); 2610ab2aceSGeorge Karpenkov } 2710ab2aceSGeorge Karpenkov return 0; 2810ab2aceSGeorge Karpenkov } 29