CMakeLists.txt 978 B

1234567891011121314151617181920212223242526
  1. option(ENABLE_FUZZING "Create executables and targets for fuzzing cJSON with afl." Off)
  2. if (ENABLE_FUZZING)
  3. find_program(AFL_FUZZ afl-fuzz)
  4. if ("${AFL_FUZZ}" MATCHES "AFL_FUZZ-NOTFOUND")
  5. message(FATAL_ERROR "Couldn't find afl-fuzz.")
  6. endif()
  7. add_executable(afl-main afl.c)
  8. target_link_libraries(afl-main "${CJSON_LIB}")
  9. if (NOT ENABLE_SANITIZERS)
  10. message(FATAL_ERROR "Enable sanitizers with -DENABLE_SANITIZERS=On to do fuzzing.")
  11. endif()
  12. option(ENABLE_FUZZING_PRINT "Fuzz printing functions together with parser." On)
  13. set(fuzz_print_parameter "no")
  14. if (ENABLE_FUZZING_PRINT)
  15. set(fuzz_print_parameter "yes")
  16. endif()
  17. add_custom_target(afl
  18. 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}"
  19. DEPENDS afl-main)
  20. endif()