just read the data and run, abort if too large

This commit is contained in:
Alex Groce
2018-07-27 16:46:18 -07:00
parent 5731fbc4e1
commit e18a26896a

View File

@@ -720,6 +720,35 @@ static int DeepState_RunSavedTestCases(void) {
}
extern int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
if (Size > sizeof(DeepState_Input)) {
return 0; // Just ignore any too-big inputs
}
struct DeepState_TestInfo *test = NULL;
DeepState_Setup();
#ifdef LIBFUZZER_WHICH_TEST
for (test = DeepState_FirstTest(); test != NULL; test = test->prev) {
if (strncmp(LIBFUZZER_WHICH_TEST, test->test_name, strlen(FLAGS_input_which_test)) == 0) {
break;
}
}
#else
test = DeepState_FirstTest();
#endif
memset((void *) DeepState_Input, 0, sizeof(DeepState_Input));
DeepState_InputIndex = 0;
memcpy((void *) DeepState_Input, (void *) Data, Size);
DeepState_Begin(test);
enum DeepState_TestRunResult result = DeepState_ForkAndRunTest(test);
DeepState_Teardown();
return 0; // Non-zero return values are reserved for future use.
}