summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Swiecki <robert@swiecki.net>2018-01-25 17:19:11 +0100
committerRobert Swiecki <robert@swiecki.net>2018-01-25 17:19:11 +0100
commit34c876f3512028878c1b3c8df0d81aab22ede30e (patch)
tree5a16496d0728ffe5fa74c48fc9ebe174fdc2ba55
parentb0c3d4903b600de672e4ef5ddf2e23c13e6d46ae (diff)
downloadhonggfuzz-34c876f3512028878c1b3c8df0d81aab22ede30e.tar.gz
remove useSanCov and use _HF_DYNFILE_SANCOV
-rw-r--r--cmdline.c7
-rw-r--r--display.c4
-rw-r--r--fuzz.c6
-rw-r--r--honggfuzz.h2
-rw-r--r--linux/trace.c4
-rw-r--r--sancov.c4
-rw-r--r--sanitizers.c2
7 files changed, 14 insertions, 15 deletions
diff --git a/cmdline.c b/cmdline.c
index b571d158..4a816375 100644
--- a/cmdline.c
+++ b/cmdline.c
@@ -220,10 +220,10 @@ static bool cmdlineVerify(honggfuzz_t* hfuzz) {
}
/*
- * 'enableSanitizers' can be auto enabled when 'useSanCov', although it's probably
+ * 'enableSanitizers' can be auto enabled when san_cov is used, although it's probably
* better to let user know about the features that each flag control.
*/
- if (hfuzz->useSanCov == true && hfuzz->enableSanitizers == false) {
+ if ((hfuzz->dynFileMethod & _HF_DYNFILE_SANCOV) && !hfuzz->enableSanitizers) {
LOG_E("Sanitizer coverage cannot be used without enabling sanitizers '-S/--sanitizers'");
return false;
}
@@ -342,7 +342,6 @@ bool cmdlineParse(int argc, char* argv[], honggfuzz_t* hfuzz) {
.sanCov_mutex = PTHREAD_MUTEX_INITIALIZER,
.extSanOpts = NULL,
- .useSanCov = false,
.covMetadata = NULL,
.report_mutex = PTHREAD_MUTEX_INITIALIZER,
@@ -522,7 +521,7 @@ bool cmdlineParse(int argc, char* argv[], honggfuzz_t* hfuzz) {
hfuzz->exe.externalCommand = optarg;
break;
case 'C':
- hfuzz->useSanCov = true;
+ hfuzz->dynFileMethod |= _HF_DYNFILE_SANCOV;
break;
case 'S':
hfuzz->enableSanitizers = true;
diff --git a/display.c b/display.c
index 43ae3c20..59147702 100644
--- a/display.c
+++ b/display.c
@@ -223,7 +223,7 @@ static void display_displayLocked(honggfuzz_t* hfuzz) {
display_put(" Coverage :");
/* HW perf specific counters */
- if (hfuzz->dynFileMethod == 0 && !hfuzz->useSanCov) {
+ if (hfuzz->dynFileMethod == 0) {
display_put(" [none]");
}
if (hfuzz->dynFileMethod & _HF_DYNFILE_INSTR_COUNT) {
@@ -252,7 +252,7 @@ static void display_displayLocked(honggfuzz_t* hfuzz) {
}
/* Sanitizer coverage specific counters */
- if (hfuzz->useSanCov) {
+ if (hfuzz->dynFileMethod & _HF_DYNFILE_SANCOV) {
uint64_t hitBB = ATOMIC_GET(hfuzz->sanCovCnts.hitBBCnt);
uint64_t totalBB = ATOMIC_GET(hfuzz->sanCovCnts.totalBBCnt);
float covPer = totalBB ? (((float)hitBB * 100) / totalBB) : 0.0;
diff --git a/fuzz.c b/fuzz.c
index d5dc63b1..4aef0236 100644
--- a/fuzz.c
+++ b/fuzz.c
@@ -442,7 +442,7 @@ static void fuzz_fuzzLoop(run_t* run) {
if (run->global->dynFileMethod != _HF_DYNFILE_NONE) {
fuzz_perfFeedback(run);
}
- if (run->global->useSanCov) {
+ if (run->global->dynFileMethod & _HF_DYNFILE_SANCOV) {
fuzz_sanCovFeedback(run);
}
if (run->global->useVerifier && !fuzz_runVerifier(run)) {
@@ -505,7 +505,7 @@ static void fuzz_fuzzLoopSocket(run_t* run) {
if (run->global->dynFileMethod != _HF_DYNFILE_NONE) {
fuzz_perfFeedback(run);
}
- if (run->global->useSanCov) {
+ if (run->global->dynFileMethod & _HF_DYNFILE_SANCOV) {
fuzz_sanCovFeedback(run);
}
if (run->global->useVerifier && !fuzz_runVerifier(run)) {
@@ -633,7 +633,7 @@ void fuzz_threadsStart(honggfuzz_t* hfuzz, pthread_t* threads) {
/* Don't do dry run with socketFuzzer */
LOG_I("Entering phase - Feedback Driven Mode (SocketFuzzer)");
hfuzz->state = _HF_STATE_DYNAMIC_MAIN;
- } else if (hfuzz->useSanCov || hfuzz->dynFileMethod != _HF_DYNFILE_NONE) {
+ } else if (hfuzz->dynFileMethod != _HF_DYNFILE_NONE) {
LOG_I("Entering phase 1/2: Dry Run");
hfuzz->state = _HF_STATE_DYNAMIC_DRY_RUN;
} else {
diff --git a/honggfuzz.h b/honggfuzz.h
index 99dbe78c..7ad96fd0 100644
--- a/honggfuzz.h
+++ b/honggfuzz.h
@@ -92,6 +92,7 @@ typedef enum {
_HF_DYNFILE_BTS_EDGE = 0x10,
_HF_DYNFILE_IPT_BLOCK = 0x20,
_HF_DYNFILE_SOFT = 0x40,
+ _HF_DYNFILE_SANCOV = 0x80,
} dynFileMethod_t;
typedef struct {
@@ -263,7 +264,6 @@ typedef struct {
pthread_mutex_t sanCov_mutex;
const char* extSanOpts;
size_t dynFileIterExpire;
- bool useSanCov;
node_t* covMetadata;
pthread_mutex_t report_mutex;
diff --git a/linux/trace.c b/linux/trace.c
index 25d02048..623b8af0 100644
--- a/linux/trace.c
+++ b/linux/trace.c
@@ -719,7 +719,7 @@ static void arch_traceSaveData(run_t* run, pid_t pid) {
* If fuzzing with sanitizer coverage feedback increase crashes counter used
* as metric for dynFile evolution
*/
- if (run->global->useSanCov) {
+ if (run->global->dynFileMethod & _HF_DYNFILE_SANCOV) {
run->sanCovCnts.crashesCnt++;
}
@@ -999,7 +999,7 @@ static void arch_traceExitSaveData(run_t* run, pid_t pid) {
* If fuzzing with sanitizer coverage feedback increase crashes counter used
* as metric for dynFile evolution
*/
- if (run->global->useSanCov) {
+ if (run->global->dynFileMethod & _HF_DYNFILE_SANCOV) {
run->sanCovCnts.crashesCnt++;
}
diff --git a/sancov.c b/sancov.c
index 9b480de7..88182483 100644
--- a/sancov.c
+++ b/sancov.c
@@ -678,7 +678,7 @@ static bool sancov_sanCovParse(run_t* run) {
* Enabled methods are controlled from sanitizer flags in arch.c
*/
void sancov_Analyze(run_t* run) {
- if (!run->global->useSanCov) {
+ if (!(run->global->dynFileMethod & _HF_DYNFILE_SANCOV)) {
return;
}
/*
@@ -691,7 +691,7 @@ void sancov_Analyze(run_t* run) {
}
bool sancov_Init(honggfuzz_t* hfuzz) {
- if (hfuzz->useSanCov == false) {
+ if (!(hfuzz->dynFileMethod & _HF_DYNFILE_SANCOV)) {
return true;
}
sancov_trieCreate(&hfuzz->covMetadata);
diff --git a/sanitizers.c b/sanitizers.c
index 7a2c84f4..ce232d3f 100644
--- a/sanitizers.c
+++ b/sanitizers.c
@@ -111,7 +111,7 @@ static void sanitizers_AddFlag(honggfuzz_t* hfuzz, const char* env, char* buf, s
if (!hfuzz->enableSanitizers) {
snprintf(buf, buflen, "%s=%s", env, kSAN_REGULAR);
- } else if (hfuzz->useSanCov) {
+ } else if (hfuzz->dynFileMethod & _HF_DYNFILE_SANCOV) {
snprintf(buf, buflen, "%s=%s:%s:%s:%s%s/%s:%s%s/%s", env, kASAN_OPTS, abortFlag,
kSAN_COV_OPTS, kSANCOVDIR, hfuzz->io.workDir, _HF_SANCOV_DIR, kSANLOGDIR,
hfuzz->io.workDir, kLOGPREFIX);