CMakeLists.txt 1.1 KB

12345678910111213141516171819202122232425262728293031
  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. option(ENABLE_LIBFUZZER "Enable fuzzing with libfuzzer (only works with llvm 5 which hasn't been release at this point)" Off)
  8. if (ENABLE_LIBFUZZER)
  9. set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=fuzzer")
  10. endif()
  11. add_library(fuzz-target fuzz-target.c)
  12. target_link_libraries(fuzz-target "${CJSON_LIB}")
  13. add_executable(afl-main afl.c)
  14. target_link_libraries(afl-main fuzz-target)
  15. if (NOT ENABLE_SANITIZERS)
  16. message(FATAL_ERROR "Enable sanitizers with -DENABLE_SANITIZERS=On to do fuzzing.")
  17. endif()
  18. set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-error")
  19. add_custom_target(afl
  20. 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" "@@"
  21. DEPENDS afl-main)
  22. endif()