summaryrefslogtreecommitdiff
path: root/honggfuzz.c
diff options
context:
space:
mode:
authorJagger <robert@swiecki.net>2015-09-08 01:26:58 +0200
committerJagger <robert@swiecki.net>2015-09-08 01:26:58 +0200
commit794b75812b78198122e5cd1c3a1565b3565ebf84 (patch)
treeabdcfcc7ebe447258536026d5373fa20969f77a4 /honggfuzz.c
parentbcd578588a2aa964326a94a74ff857811714f80f (diff)
downloadhonggfuzz-794b75812b78198122e5cd1c3a1565b3565ebf84.tar.gz
Add support for MSAN
Diffstat (limited to 'honggfuzz.c')
-rw-r--r--honggfuzz.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/honggfuzz.c b/honggfuzz.c
index 129e206b..480f2e3c 100644
--- a/honggfuzz.c
+++ b/honggfuzz.c
@@ -86,6 +86,8 @@ static void usage(bool exit_success)
#if defined(_HF_ARCH_LINUX)
" [" AB "-p val" AC "] : [Linux] attach to a pid (and its thread group), instead of \n"
" monitoring a previously created process, (default: '" AB "0" AC "' [none])\n"
+ " [" AB "-LR" AC "] : [Linux] Don't disable ASLR randomization, might be useful with MSAN\n"
+ " [" AB "-LU" AC "] : [Linux] Report MSAN's UMRS (uninitialized memory access)\n"
" [" AB "-g val" AC "] : [Linux] allow that many regressions (perf events) wrt the best one\n"
" [" AB "-o val" AC "] : [Linux] cut-off address, don't record branches above that address\n"
" [" AB "-D val" AC "] : [Linux] create a file dynamically with Linux perf counters,\n"
@@ -168,6 +170,9 @@ int main(int argc, char **argv)
.dynamicRegressionCnt = 0,
.dynamicCutOffAddr = ~(0ULL),
.dynamicFile_mutex = PTHREAD_MUTEX_INITIALIZER,
+
+ .disableRandomization = true,
+ .msanReportUMRS = false,
};
if (argc < 2) {
@@ -175,7 +180,7 @@ int main(int argc, char **argv)
}
for (;;) {
- c = getopt(argc, argv, "-?hqvsuf:d:e:r:c:F:D:t:a:R:n:N:l:p:g:o:E:w:");
+ c = getopt(argc, argv, "-?hqvsuf:d:e:r:c:F:D:t:a:R:n:N:l:p:g:o:E:w:L:");
if (c < 0)
break;
@@ -275,12 +280,26 @@ int main(int argc, char **argv)
case 'w':
hfuzz.dictionaryFile = optarg;
break;
+ case 'L':
+ switch (optarg[0]) {
+ case 'R':
+ hfuzz.disableRandomization = false;
+ break;
+ case 'U':
+ hfuzz.msanReportUMRS = true;
+ break;
+ default:
+ LOGMSG(l_ERROR, "Unknown -L switch");
+ usage(EXIT_FAILURE);
+ }
default:
break;
}
}
hfuzz.cmdline = &argv[optind];
+ log_setMinLevel(ll);
+
if (hfuzz.dynamicFileBestSz > hfuzz.maxFileSz) {
LOGMSG(l_FATAL,
"Initial dynamic file size cannot be larger than maximum file size (%zu > %zu)",