aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormarc <marc@marc.srlabs.de>2023-08-09 16:31:30 +0200
committermarc <marc@marc.srlabs.de>2023-08-09 16:31:30 +0200
commitd9cadb2e7db1d1c208cd40299f0e5c4f6364aa2c (patch)
treef47e97c5b10aee725b53fbaba2f1d51dd86e2d83
parenta0aaae9b179ecabec59fbe528b24ec0651a1d9be (diff)
downloadafl++-d9cadb2e7db1d1c208cd40299f0e5c4f6364aa2c.tar.gz
-c - support
-rw-r--r--docs/Changelog.md5
-rw-r--r--src/afl-fuzz.c25
2 files changed, 24 insertions, 6 deletions
diff --git a/docs/Changelog.md b/docs/Changelog.md
index 75167172..76f98547 100644
--- a/docs/Changelog.md
+++ b/docs/Changelog.md
@@ -15,7 +15,10 @@
command line tool! See custom_mutators/aflpp/standalone/
- display the state of the fuzzing run in the UI :-)
- fix timeout setting if '+' is used or a session is restarted
- - -c X option to enable base64 transformation solving
+ - -l X option to enable base64 transformation solving
+ - allow to disable CMPLOG with '-c -' (e.g. afl.rs enforces '-c 0' on
+ every instance which is counterproductive).
+
- afl-cmin/afl-cmin.bash:
- fixed a bug inherited from vanilla AFL where a coverage of
map[123] = 11 would be the same as map[1123] = 1
diff --git a/src/afl-fuzz.c b/src/afl-fuzz.c
index e1f93f0d..cdb3f996 100644
--- a/src/afl-fuzz.c
+++ b/src/afl-fuzz.c
@@ -180,7 +180,8 @@ static void usage(u8 *argv0, int more_help) {
"it.\n"
" if using QEMU/FRIDA or the fuzzing target is "
"compiled\n"
- " for CmpLog then just use -c 0.\n"
+ " for CmpLog then use '-c 0'. To disable Cmplog use '-c "
+ "-'.\n"
" -l cmplog_opts - CmpLog configuration values (e.g. \"2ATR\"):\n"
" 1=small files, 2=larger files (default), 3=all "
"files,\n"
@@ -600,8 +601,23 @@ int main(int argc, char **argv_orig, char **envp) {
case 'c': {
- afl->shm.cmplog_mode = 1;
- afl->cmplog_binary = ck_strdup(optarg);
+ if (strcmp(optarg, "-") == 0) {
+
+ if (afl->shm.cmplog_mode) {
+
+ ACTF("Disabling cmplog again because of '-c -'.");
+ afl->shm.cmplog_mode = 0;
+ afl->cmplog_binary = NULL;
+
+ }
+
+ } else {
+
+ afl->shm.cmplog_mode = 1;
+ afl->cmplog_binary = ck_strdup(optarg);
+
+ }
+
break;
}
@@ -1510,8 +1526,7 @@ int main(int argc, char **argv_orig, char **envp) {
if (!afl->use_banner) { afl->use_banner = argv[optind]; }
- if (afl->shm.cmplog_mode &&
- (!strcmp("-", afl->cmplog_binary) || !strcmp("0", afl->cmplog_binary))) {
+ if (afl->shm.cmplog_mode && strcmp("0", afl->cmplog_binary) == 0) {
afl->cmplog_binary = strdup(argv[optind]);