diff options
author | Robert Swiecki <robert@swiecki.net> | 2017-02-10 03:59:40 +0100 |
---|---|---|
committer | Robert Swiecki <robert@swiecki.net> | 2017-02-10 03:59:40 +0100 |
commit | b4e13c05dca14d5bc2c21f7f3e732fa3cb9628d2 (patch) | |
tree | 2e1aafeae5a47e086d4d416a684a0a539cc0b17e /sanitizers.c | |
parent | 68d641b1f051ce9e42b6a7c8a608c814584be1bb (diff) | |
download | honggfuzz-b4e13c05dca14d5bc2c21f7f3e732fa3cb9628d2.tar.gz |
Set up some basic *san envvars, even with sanitizers support disabled
Diffstat (limited to 'sanitizers.c')
-rw-r--r-- | sanitizers.c | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/sanitizers.c b/sanitizers.c index f0a6ceb0..225fb822 100644 --- a/sanitizers.c +++ b/sanitizers.c @@ -93,6 +93,9 @@ #define kMSAN_OPTS kSAN_COMMON":exit_code=" STR(HF_SAN_EXIT_CODE) ":"\ "wrap_signals=0:print_stats=1" +/* If no sanitzer support was requested, simply make it use abort() on errors */ +#define kSAN_REGULAR "abort_on_error=1:handle_segv=1:allocator_may_return_null=1" + /* * If the program ends with a signal that ASan does not handle (or can not * handle at all, like SIGKILL), coverage data will be lost. This is a big @@ -103,9 +106,24 @@ */ #define kSAN_COV_OPTS "coverage=1:coverage_direct=1" +static void sanitizers_Regular(honggfuzz_t * hfuzz) +{ + hfuzz->sanOpts.asanOpts = util_Calloc(strlen(kSAN_REGULAR) + 1); + strcpy(hfuzz->sanOpts.asanOpts, kSAN_REGULAR); + hfuzz->sanOpts.msanOpts = util_Calloc(strlen(kSAN_REGULAR) + 1); + strcpy(hfuzz->sanOpts.msanOpts, kSAN_REGULAR); + hfuzz->sanOpts.ubsanOpts = util_Calloc(strlen(kSAN_REGULAR) + 1); + strcpy(hfuzz->sanOpts.ubsanOpts, kSAN_REGULAR); +} + bool sanitizers_Init(honggfuzz_t * hfuzz) { - if (hfuzz->linux.pid > 0 || hfuzz->enableSanitizers == false) { + if (hfuzz->linux.pid > 0) { + return true; + } + + if (hfuzz->enableSanitizers == false) { + sanitizers_Regular(hfuzz); return true; } @@ -185,10 +203,6 @@ bool sanitizers_Init(honggfuzz_t * hfuzz) bool sanitizers_prepareExecve(honggfuzz_t * hfuzz) { - if (hfuzz->enableSanitizers == false) { - return true; - } - /* Address Sanitizer (ASan) */ if (hfuzz->sanOpts.asanOpts) { if (setenv("ASAN_OPTIONS", hfuzz->sanOpts.asanOpts, 1) == -1) { |