fuzzing: Speed up afl using persistent mode (in proccess fuzzing)

This commit is contained in:
Max Bruckner 2017-02-18 02:52:38 +01:00
parent ae4681b787
commit da551c753f
2 changed files with 15 additions and 1 deletions

View File

@ -18,6 +18,8 @@ if (ENABLE_FUZZING)
set(fuzz_print_parameter "yes") set(fuzz_print_parameter "yes")
endif() endif()
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-error")
add_custom_target(afl add_custom_target(afl
COMMAND "${AFL_FUZZ}" -i "${CMAKE_CURRENT_SOURCE_DIR}/inputs" -o "${CMAKE_CURRENT_BINARY_DIR}/findings" -x "${CMAKE_CURRENT_SOURCE_DIR}/json.dict" -- "${CMAKE_CURRENT_BINARY_DIR}/afl-main" "@@" "${fuzz_print_parameter}" COMMAND "${AFL_FUZZ}" -i "${CMAKE_CURRENT_SOURCE_DIR}/inputs" -o "${CMAKE_CURRENT_BINARY_DIR}/findings" -x "${CMAKE_CURRENT_SOURCE_DIR}/json.dict" -- "${CMAKE_CURRENT_BINARY_DIR}/afl-main" "@@" "${fuzz_print_parameter}"
DEPENDS afl-main) DEPENDS afl-main)

View File

@ -87,7 +87,7 @@ int main(int argc, char** argv)
const char *filename = NULL; const char *filename = NULL;
cJSON *item = NULL; cJSON *item = NULL;
char *json = NULL; char *json = NULL;
int status = EXIT_SUCCESS; int status;
char *printed_json = NULL; char *printed_json = NULL;
if ((argc < 2) || (argc > 3)) if ((argc < 2) || (argc > 3))
@ -100,6 +100,12 @@ int main(int argc, char** argv)
filename = argv[1]; filename = argv[1];
#if __AFL_HAVE_MANUAL_CONTROL
while (__AFL_LOOP(1000))
{
#endif
status = EXIT_SUCCESS;
json = read_file(filename); json = read_file(filename);
if ((json == NULL) || (json[0] == '\0') || (json[1] == '\0')) if ((json == NULL) || (json[0] == '\0') || (json[1] == '\0'))
{ {
@ -149,15 +155,21 @@ cleanup:
if (item != NULL) if (item != NULL)
{ {
cJSON_Delete(item); cJSON_Delete(item);
item = NULL;
} }
if (json != NULL) if (json != NULL)
{ {
free(json); free(json);
json = NULL;
} }
if (printed_json != NULL) if (printed_json != NULL)
{ {
free(printed_json); free(printed_json);
printed_json = NULL;
} }
#if __AFL_HAVE_MANUAL_CONTROL
}
#endif
return status; return status;
} }