aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvanhauser-thc <vh@thc.org>2023-12-15 09:23:30 +0100
committervanhauser-thc <vh@thc.org>2023-12-15 09:23:30 +0100
commit37505928bcec63a08fe50cdebdbf7b9b28b952d0 (patch)
treeccfe74329ae17fd3498eae6fff313d62698fb258
parentae9cdb34e4fdc10c7c2d1c775238a7501fda288a (diff)
downloadafl++-37505928bcec63a08fe50cdebdbf7b9b28b952d0.tar.gz
fix 2 mutation bugs
-rw-r--r--docs/Changelog.md3
-rw-r--r--include/afl-mutations.h16
2 files changed, 11 insertions, 8 deletions
diff --git a/docs/Changelog.md b/docs/Changelog.md
index 7faa0ab3..0d75782d 100644
--- a/docs/Changelog.md
+++ b/docs/Changelog.md
@@ -5,6 +5,7 @@
### Version ++4.09a (dev)
- afl-fuzz:
+ - fixed the new mutation implementation for two bugs
- added `AFL_FINAL_SYNC` which forces a final fuzzer sync (also for `-F`)
before terminating.
- added AFL_IGNORE_SEED_PROBLEMS to skip over seeds that time out instead
@@ -23,6 +24,8 @@
- option -n will not use color in the output
- instrumentation:
- fix for a few string compare transform functions for LAF
+ - we are instrumenting __cxx internal functions again. this might break
+ a few targets, please report if so.
- frida_mode:
- fixes support for large map offsets
- support for AFL_FUZZER_LOOPCOUNT for afl.rs and LLVMFuzzerTestOneInput
diff --git a/include/afl-mutations.h b/include/afl-mutations.h
index d709b90d..6338c93c 100644
--- a/include/afl-mutations.h
+++ b/include/afl-mutations.h
@@ -2456,14 +2456,14 @@ inline u32 afl_mutate(afl_state_t *afl, u8 *buf, u32 len, u32 steps,
}
- char buf[20];
- snprintf(buf, sizeof(buf), "%" PRId64, val);
+ char numbuf[32];
+ snprintf(numbuf, sizeof(buf), "%" PRId64, val);
u32 old_len = off2 - off;
- u32 new_len = strlen(buf);
+ u32 new_len = strlen(numbuf);
if (old_len == new_len) {
- memcpy(buf + off, buf, new_len);
+ memcpy(buf + off, numbuf, new_len);
} else {
@@ -2473,7 +2473,7 @@ inline u32 afl_mutate(afl_state_t *afl, u8 *buf, u32 len, u32 steps,
/* Inserted part */
- memcpy(tmp_buf + off, buf, new_len);
+ memcpy(tmp_buf + off, numbuf, new_len);
/* Tail */
memcpy(tmp_buf + off + new_len, buf + off2, len - off2);
@@ -2509,9 +2509,9 @@ inline u32 afl_mutate(afl_state_t *afl, u8 *buf, u32 len, u32 steps,
}
u64 val = rand_next(afl);
- char buf[20];
- snprintf(buf, sizeof(buf), "%llu", val);
- memcpy(buf + pos, buf, len);
+ char numbuf[32];
+ snprintf(numbuf, sizeof(numbuf), "%llu", val);
+ memcpy(buf + pos, numbuf, len);
break;