summaryrefslogtreecommitdiff
path: root/libhfuzz/instrument.c
diff options
context:
space:
mode:
authorJagger <robert@swiecki.net>2016-09-14 02:50:22 +0200
committerJagger <robert@swiecki.net>2016-09-14 02:50:22 +0200
commite9606ce6dc6d79702331abe19db7cbc17dbe6e18 (patch)
tree1f962a862cb571ff10f12c6b234c4c9b49c6c759 /libhfuzz/instrument.c
parent4a00f213343930a66d39555807907c325bcf8d57 (diff)
downloadhonggfuzz-e9606ce6dc6d79702331abe19db7cbc17dbe6e18.tar.gz
instrumentation: fix switch comparison
Diffstat (limited to 'libhfuzz/instrument.c')
-rw-r--r--libhfuzz/instrument.c4
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);