diff options
author | Jagger <robert@swiecki.net> | 2016-09-14 02:50:22 +0200 |
---|---|---|
committer | Jagger <robert@swiecki.net> | 2016-09-14 02:50:22 +0200 |
commit | e9606ce6dc6d79702331abe19db7cbc17dbe6e18 (patch) | |
tree | 1f962a862cb571ff10f12c6b234c4c9b49c6c759 /libhfuzz/instrument.c | |
parent | 4a00f213343930a66d39555807907c325bcf8d57 (diff) | |
download | honggfuzz-e9606ce6dc6d79702331abe19db7cbc17dbe6e18.tar.gz |
instrumentation: fix switch comparison
Diffstat (limited to 'libhfuzz/instrument.c')
-rw-r--r-- | libhfuzz/instrument.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/libhfuzz/instrument.c b/libhfuzz/instrument.c index 83e0b071..dfaea816 100644 --- a/libhfuzz/instrument.c +++ b/libhfuzz/instrument.c @@ -148,7 +148,7 @@ void __sanitizer_cov_trace_switch(uint64_t Val, uint64_t * Cases) { for (uint64_t i = 0; i < Cases[0]; i++) { uintptr_t pos = ((uintptr_t) __builtin_return_address(0) + i) % _HF_PERF_BITMAP_SIZE_16M; - uint8_t v = (64U - __builtin_popcountll(Val ^ Cases[i + 2])); + uint8_t v = ((8 * Cases[1]) - __builtin_popcountll(Val ^ Cases[i + 2])); uint8_t prev = ATOMIC_GET(feedback->bbMapCmp[pos]); if (prev < v) { ATOMIC_SET(feedback->bbMapCmp[pos], v); @@ -160,7 +160,7 @@ void __sanitizer_cov_trace_switch(uint64_t Val, uint64_t * Cases) void libhfuzz_instrumentUpdateCmpMap(void *addr, unsigned int new) { uintptr_t pos = (uintptr_t) addr % _HF_PERF_BITMAP_SIZE_16M; - uint8_t v = new > 255 ? 255 : new; + uint8_t v = new > 254 ? 254 : new; uint8_t prev = ATOMIC_GET(feedback->bbMapCmp[pos]); if (prev < v) { ATOMIC_SET(feedback->bbMapCmp[pos], v); |