Add four, basic fuzz tests.
This change adds fuzzing tests for:
∙ Certificate parsing
∙ Private key parsing
∙ ClientHello parsing
∙ Server first flow (ServerHello, Certificate, etc) parsing.
Change-Id: I5f53282263eaaff69b1a03c819cca73750433653
Reviewed-on: https://boringssl-review.googlesource.com/6460
Reviewed-by: Adam Langley <agl@google.com>
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 54c71eb..c05e645 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -80,6 +80,16 @@
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c11 -D_XOPEN_SOURCE=700")
endif()
+if(FUZZ)
+ if(!CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+ message("You need to build with Clang for fuzzing to work")
+ endif()
+
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -fsanitize-coverage=edge,indirect-calls")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fsanitize-coverage=edge,indirect-calls")
+ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address")
+endif()
+
add_definitions(-DBORINGSSL_IMPLEMENTATION)
if (BUILD_SHARED_LIBS)
@@ -147,6 +157,10 @@
add_subdirectory(tool)
add_subdirectory(decrepit)
+if(FUZZ)
+ add_subdirectory(fuzz)
+endif()
+
if (NOT ${CMAKE_VERSION} VERSION_LESS "3.2")
# USES_TERMINAL is only available in CMake 3.2 or later.
set(MAYBE_USES_TERMINAL USES_TERMINAL)