1 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 2 // See https://llvm.org/LICENSE.txt for license information. 3 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 4 5 // Simple test for a fuzzer. The fuzzer must find the interesting switch value. 6 #include <cstddef> 7 #include <cstdint> 8 #include <cstdio> 9 #include <cstdlib> 10 #include <cstring> 11 Switch(int a)12int Switch(int a) { 13 switch(a) { 14 case 100001: return 1; 15 case 100002: return 2; 16 case 100003: return 4; 17 } 18 return 0; 19 } 20 LLVMFuzzerTestOneInput(const uint8_t * Data,size_t Size)21extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) { 22 const int N = 3; 23 if (Size < N * sizeof(int)) return 0; 24 int Res = 0; 25 for (int i = 0; i < N; i++) { 26 int X; 27 memcpy(&X, Data + i * sizeof(int), sizeof(int)); 28 Res += Switch(X); 29 } 30 if (Res == 5 || Res == 3 || Res == 6 || Res == 7) { 31 fprintf(stderr, "BINGO; Found the target, exiting; Res=%d\n", Res); 32 exit(1); 33 } 34 return 0; 35 } 36 37