1*2946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
2*2946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information.
3*2946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
410ab2aceSGeorge Karpenkov
510ab2aceSGeorge Karpenkov // Make sure LLVMFuzzerInitialize is called.
610ab2aceSGeorge Karpenkov #include <assert.h>
710ab2aceSGeorge Karpenkov #include <stddef.h>
810ab2aceSGeorge Karpenkov #include <stdint.h>
910ab2aceSGeorge Karpenkov #include <stdio.h>
1010ab2aceSGeorge Karpenkov #include <stdlib.h>
1110ab2aceSGeorge Karpenkov #include <string.h>
1210ab2aceSGeorge Karpenkov
1302f3ad81SMatt Morehouse static char *argv0 = NULL;
1410ab2aceSGeorge Karpenkov
LLVMFuzzerInitialize(int * argc,char *** argv)1510ab2aceSGeorge Karpenkov extern "C" int LLVMFuzzerInitialize(int *argc, char ***argv) {
1610ab2aceSGeorge Karpenkov assert(*argc > 0);
1710ab2aceSGeorge Karpenkov argv0 = **argv;
1810ab2aceSGeorge Karpenkov fprintf(stderr, "LLVMFuzzerInitialize: %s\n", argv0);
1910ab2aceSGeorge Karpenkov return 0;
2010ab2aceSGeorge Karpenkov }
2110ab2aceSGeorge Karpenkov
LLVMFuzzerTestOneInput(const uint8_t * Data,size_t Size)2210ab2aceSGeorge Karpenkov extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
23d3e4b7e2SKostya Serebryany assert(argv0);
2402f3ad81SMatt Morehouse if (argv0 && Size >= 4 && !memcmp(Data, "fuzz", 4)) {
2510ab2aceSGeorge Karpenkov fprintf(stderr, "BINGO %s\n", argv0);
2610ab2aceSGeorge Karpenkov exit(1);
2710ab2aceSGeorge Karpenkov }
2810ab2aceSGeorge Karpenkov return 0;
2910ab2aceSGeorge Karpenkov }
30