mirror of
				https://github.com/eledio-devices/thirdparty-ArduinoJson.git
				synced 2025-10-31 16:14:11 +01:00 
			
		
		
		
	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