summaryrefslogtreecommitdiffstats
path: root/tests/fuzz/CMakeLists.txt
blob: 3da61e1c164a706c2c7fa3a9576b194ea587f135 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
if(ENABLE_FUZZ_TARGETS)
    set(fuzz_targets lys_parse_mem lyd_parse_mem_xml lyd_parse_mem_json yang_parse_module)

    if(FUZZER STREQUAL "AFL")
        foreach(target_name IN LISTS fuzz_targets)
            add_executable(${target_name}_fuzz_harness ${target_name}.c main.c)
            target_link_libraries(${target_name}_fuzz_harness yang)
        endforeach()
    elseif()
        foreach(target_name IN LISTS fuzz_targets)
            add_executable(${target_name}_fuzz_harness ${target_name}.c)
            set_source_files_properties(${target_name}.c PROPERTIES COMPILE_FLAGS "-fsanitize=fuzzer")
            target_link_libraries(${target_name}_fuzz_harness yang "-fsanitize=fuzzer")
        endforeach()
    endif()
endif()

if(ENABLE_TESTS)
    add_executable(fuzz_regression_test fuzz_regression_test.c)
    set(fuzz_regression_tests lys_parse_mem lyd_parse_mem_xml lyd_parse_mem_json)
    foreach(target_name IN LISTS fuzz_regression_tests)
        file(COPY ${CMAKE_SOURCE_DIR}/tests/fuzz/corpus/${target_name} DESTINATION ${CMAKE_BINARY_DIR}/tests/fuzz/)
        add_executable(regress_fuzz_${target_name} ${target_name}.c main.c)
        set_target_properties(regress_fuzz_${target_name} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/tests/fuzz/${target_name}")
        target_link_libraries(regress_fuzz_${target_name} yang)
        add_test(NAME regress_fuzz_${target_name} COMMAND fuzz_regression_test regress_fuzz_${target_name} . WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/tests/fuzz/${target_name})
    endforeach()
endif()