aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvan Hauser <vh@thc.org>2020-06-24 11:14:00 +0200
committervan Hauser <vh@thc.org>2020-06-24 11:14:00 +0200
commitfce010f0510b9d3f8ec85d049373ae6db310994e (patch)
treeab162ba7db09043d0f231eb031e3b75faec25072
parentbdc8e3b79e8fd4b59ef71a9f585fe8590b90f1c2 (diff)
downloadafl++-fce010f0510b9d3f8ec85d049373ae6db310994e.tar.gz
add -D option for -S
-rw-r--r--docs/Changelog.md1
-rw-r--r--src/afl-fuzz.c13
2 files changed, 11 insertions, 3 deletions
diff --git a/docs/Changelog.md b/docs/Changelog.md
index ce6c9ed5..336dca01 100644
--- a/docs/Changelog.md
+++ b/docs/Changelog.md
@@ -14,6 +14,7 @@ sending a mail to <afl-users+subscribe@googlegroups.com>.
- -S secondary nodes now only sync from the main node to increase
performance, the -M main node still syncs from everyone. Added checks
that ensure exactly one main node is present and warn otherwise
+ - Add -D after -S to force a secondary to perform deterministic fuzzing
- If no main node is present at a sync one secondary node automatically
becomes a temporary main node until a real main nodes shows up
- Fixed a mayor performance issue we inherited from AFLfast
diff --git a/src/afl-fuzz.c b/src/afl-fuzz.c
index f3b63ff0..29563f54 100644
--- a/src/afl-fuzz.c
+++ b/src/afl-fuzz.c
@@ -159,7 +159,9 @@ static void usage(afl_state_t *afl, u8 *argv0, int more_help) {
"Other stuff:\n"
" -T text - text banner to show on the screen\n"
- " -M / -S id - distributed mode (see docs/parallel_fuzzing.md)\n"
+ " -M/-S id - distributed mode (see docs/parallel_fuzzing.md)\n"
+ " use -D to force -S secondary to perform deterministic "
+ "fuzzing\n"
" -I command - execute this command/script when a new crash is "
"found\n"
" -B bitmap.txt - mutate a specific test case, use the out/fuzz_bitmap "
@@ -292,7 +294,7 @@ int main(int argc, char **argv_orig, char **envp) {
rand_set_seed(afl, tv.tv_sec ^ tv.tv_usec ^ getpid());
while ((opt = getopt(argc, argv,
- "+c:i:I:o:f:m:t:T:dnCB:S:M:x:QNUWe:p:s:V:E:L:hRP:")) >
+ "+c:i:I:o:f:m:t:T:dDnCB:S:M:x:QNUWe:p:s:V:E:L:hRP:")) >
0) {
switch (opt) {
@@ -518,6 +520,11 @@ int main(int argc, char **argv_orig, char **envp) {
break;
+ case 'D': /* enforce deterministic */
+
+ afl->skip_deterministic = 0;
+ break;
+
case 'd': /* skip deterministic */
afl->skip_deterministic = 1;
@@ -1093,7 +1100,7 @@ int main(int argc, char **argv_orig, char **envp) {
if (afl->is_main_node && check_main_node_exists(afl) == 1) {
- WARNF("it is wasteful to run more than one master!");
+ WARNF("it is wasteful to run more than one main node!");
sleep(1);
}