add -D option for -S
MODIFY
docs/Changelog.md
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

MODIFY
src/afl-fuzz.c
src/afl-fuzz.c
@@ -160,6 +160,8 @@ 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"
+ " 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);
}

add -D option for -S