forked from bblanchon/ArduinoJson
Added memory sanitizer to fuzzers
This commit is contained in:
14
.travis.yml
14
.travis.yml
@ -128,20 +128,6 @@ matrix:
|
|||||||
- env: SCRIPT=arduino VERSION=1.8.2 BOARD=arduino:samd:mkr1000
|
- env: SCRIPT=arduino VERSION=1.8.2 BOARD=arduino:samd:mkr1000
|
||||||
- env: SCRIPT=platformio BOARD=uno
|
- env: SCRIPT=platformio BOARD=uno
|
||||||
- env: SCRIPT=platformio BOARD=esp01
|
- env: SCRIPT=platformio BOARD=esp01
|
||||||
- addons:
|
|
||||||
apt:
|
|
||||||
sources:
|
|
||||||
- sourceline: 'deb https://apt.llvm.org/xenial/ llvm-toolchain-xenial-9 main'
|
|
||||||
key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key'
|
|
||||||
packages: ['clang-9','llvm-9']
|
|
||||||
env: SCRIPT=fuzz CLANG=9 FUZZER=json
|
|
||||||
- addons:
|
|
||||||
apt:
|
|
||||||
sources:
|
|
||||||
- sourceline: 'deb https://apt.llvm.org/xenial/ llvm-toolchain-xenial-9 main'
|
|
||||||
key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key'
|
|
||||||
packages: ['clang-9','llvm-9']
|
|
||||||
env: SCRIPT=fuzz CLANG=9 FUZZER=msgpack
|
|
||||||
cache:
|
cache:
|
||||||
directories:
|
directories:
|
||||||
- "~/.platformio"
|
- "~/.platformio"
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
# Copyright Benoit Blanchon 2014-2020
|
# Copyright Benoit Blanchon 2014-2020
|
||||||
# MIT License
|
# MIT License
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.7)
|
cmake_minimum_required(VERSION 3.0)
|
||||||
|
|
||||||
project(ArduinoJson VERSION 6.16.0)
|
project(ArduinoJson VERSION 6.16.0)
|
||||||
|
|
||||||
|
@ -22,22 +22,25 @@ target_link_libraries(json_reproducer
|
|||||||
ArduinoJson
|
ArduinoJson
|
||||||
)
|
)
|
||||||
|
|
||||||
macro(add_fuzzer name)
|
# Infer path of llvm-symbolizer from the path of clang
|
||||||
set(FUZZER "${name}_fuzzer")
|
string(REPLACE "clang++" "llvm-symbolizer" LLVM_SYMBOLIZER ${CMAKE_CXX_COMPILER})
|
||||||
|
|
||||||
|
macro(add_fuzzer name mode)
|
||||||
|
set(FUZZER "${name}_${mode}_fuzzer")
|
||||||
set(CORPUS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/${name}_corpus")
|
set(CORPUS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/${name}_corpus")
|
||||||
set(SEED_CORPUS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/${name}_seed_corpus")
|
set(SEED_CORPUS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/${name}_seed_corpus")
|
||||||
add_executable("${FUZZER}"
|
add_executable("${FUZZER}"
|
||||||
"${FUZZER}.cpp"
|
"${name}_fuzzer.cpp"
|
||||||
)
|
)
|
||||||
target_link_libraries("${FUZZER}"
|
target_link_libraries("${FUZZER}"
|
||||||
ArduinoJson
|
ArduinoJson
|
||||||
)
|
)
|
||||||
set_target_properties("${FUZZER}"
|
set_target_properties("${FUZZER}"
|
||||||
PROPERTIES
|
PROPERTIES
|
||||||
COMPILE_FLAGS
|
COMPILE_FLAGS
|
||||||
"-fprofile-instr-generate -fcoverage-mapping -fsanitize=address,undefined,fuzzer -fno-sanitize-recover=all"
|
"-fprofile-instr-generate -fcoverage-mapping -fsanitize=${mode},fuzzer -fno-sanitize-recover=all"
|
||||||
LINK_FLAGS
|
LINK_FLAGS
|
||||||
"-fprofile-instr-generate -fcoverage-mapping -fsanitize=address,undefined,fuzzer -fno-sanitize-recover=all"
|
"-fprofile-instr-generate -fcoverage-mapping -fsanitize=${mode},fuzzer -fno-sanitize-recover=all"
|
||||||
)
|
)
|
||||||
|
|
||||||
add_test(
|
add_test(
|
||||||
@ -46,9 +49,25 @@ macro(add_fuzzer name)
|
|||||||
COMMAND
|
COMMAND
|
||||||
"${FUZZER}" "${CORPUS_DIR}" "${SEED_CORPUS_DIR}" -max_total_time=5 -timeout=1
|
"${FUZZER}" "${CORPUS_DIR}" "${SEED_CORPUS_DIR}" -max_total_time=5 -timeout=1
|
||||||
)
|
)
|
||||||
|
|
||||||
|
set_tests_properties("${FUZZER}"
|
||||||
|
PROPERTIES
|
||||||
|
ENVIRONMENT
|
||||||
|
ASAN_SYMBOLIZER_PATH=${LLVM_SYMBOLIZER}
|
||||||
|
ENVIRONMENT
|
||||||
|
LLVM_SYMBOLIZER_PATH=${LLVM_SYMBOLIZER}
|
||||||
|
ENVIRONMENT
|
||||||
|
MSAN_SYMBOLIZER_PATH=${LLVM_SYMBOLIZER}
|
||||||
|
ENVIRONMENT
|
||||||
|
UBSAN_SYMBOLIZER_PATH=${LLVM_SYMBOLIZER}
|
||||||
|
)
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 6)
|
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 6)
|
||||||
add_fuzzer(json)
|
add_fuzzer(json address)
|
||||||
add_fuzzer(msgpack)
|
add_fuzzer(json memory)
|
||||||
|
add_fuzzer(json undefined)
|
||||||
|
add_fuzzer(msgpack address)
|
||||||
|
add_fuzzer(msgpack memory)
|
||||||
|
add_fuzzer(msgpack undefined)
|
||||||
endif()
|
endif()
|
||||||
|
Reference in New Issue
Block a user