diff --git a/CMakeLists.txt b/CMakeLists.txt index 6e6c2df..2ef80ab 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -565,6 +565,12 @@ IF (DISABLE_MEMMANAGER) ADD_DEFINITIONS(-DIM_DISABLE) ENDIF (DISABLE_MEMMANAGER) +OPTION(EXIT_ON_EXCEPTION "Thrown exceptions in VERMONT result in a graceful shutdown. Useful for fuzz testing only." OFF) +MARK_AS_ADVANCED(EXIT_ON_EXCEPTION) +IF (EXIT_ON_EXCEPTION) + ADD_DEFINITIONS(-DEXIT_ON_EXCEPTION) +ENDIF(EXIT_ON_EXCEPTION) + ### IPFIXLOLIB_RAWDIR_SUPPORT diff --git a/src/common/msg.cc b/src/common/msg.cc index b3e5032..1488da3 100644 --- a/src/common/msg.cc +++ b/src/common/msg.cc @@ -334,7 +334,11 @@ extern "C" { msg_expand(text, line, filename, funcname, simplefunc, LOG_CRIT, fmt, &args); va_end(args); +#ifdef EXIT_ON_EXCEPTION + exit(0); +#else throw std::runtime_error(text); +#endif } #ifdef __cplusplus