mirror of
https://github.com/AFLplusplus/AFLplusplus.git
synced 2025-06-10 17:21:33 +00:00
final touches for skipdet
This commit is contained in:
parent
06f0982f0f
commit
5ba66a8860
@ -45,7 +45,7 @@ endif
|
||||
LLVMVER = $(shell $(LLVM_CONFIG) --version 2>/dev/null | sed 's/git//' | sed 's/svn//' )
|
||||
LLVM_MAJOR = $(shell $(LLVM_CONFIG) --version 2>/dev/null | sed 's/\..*//' )
|
||||
LLVM_MINOR = $(shell $(LLVM_CONFIG) --version 2>/dev/null | sed 's/.*\.//' | sed 's/git//' | sed 's/svn//' | sed 's/ .*//' )
|
||||
LLVM_UNSUPPORTED = $(shell $(LLVM_CONFIG) --version 2>/dev/null | grep -E -q '^[0-2]\.|^3.[0-7]\.' && echo 1 || echo 0 )
|
||||
LLVM_UNSUPPORTED = $(shell $(LLVM_CONFIG) --version 2>/dev/null | grep -E -q '^[0-2]\.|^3.[0-8]\.' && echo 1 || echo 0 )
|
||||
LLVM_TOO_NEW = $(shell $(LLVM_CONFIG) --version 2>/dev/null | grep -E -q '^1[8-9]|^2[0-9]' && echo 1 || echo 0 )
|
||||
LLVM_TOO_OLD = $(shell $(LLVM_CONFIG) --version 2>/dev/null | grep -E -q '^[1-9]\.|^1[012]\.' && echo 1 || echo 0 )
|
||||
LLVM_NEW_API = $(shell $(LLVM_CONFIG) --version 2>/dev/null | grep -E -q '^1[0-9]' && echo 1 || echo 0 )
|
||||
|
@ -9,6 +9,8 @@
|
||||
explore is slightly better now.
|
||||
- fixed minor issues in the mutation engine, thanks to @futhewo for
|
||||
reporting!
|
||||
- better deterministic fuzzing is now available, benchmarks have shown
|
||||
to improve fuzzing. Enable with -D. Thanks to @kdsjZh for the PR!
|
||||
- afl-cc:
|
||||
- large rewrite by @SonicStark which fixes a few corner cases, thanks!
|
||||
- LTO mode now requires llvm 12+
|
||||
|
@ -1019,7 +1019,9 @@ void afl_fsrv_start(afl_forkserver_t *fsrv, char **argv,
|
||||
|
||||
if (status >= 0x41464c00 && status <= 0x41464cff) {
|
||||
|
||||
FATAL("Target uses the new forkserver model, you need to switch to a newer afl-fuzz too!");
|
||||
FATAL(
|
||||
"Target uses the new forkserver model, you need to switch to a newer "
|
||||
"afl-fuzz too!");
|
||||
|
||||
}
|
||||
|
||||
|
@ -102,7 +102,7 @@ void afl_state_init(afl_state_t *afl, uint32_t map_size) {
|
||||
afl->stats_update_freq = 1;
|
||||
afl->stats_file_update_freq_msecs = STATS_UPDATE_SEC * 1000;
|
||||
afl->stats_avg_exec = 0;
|
||||
afl->skip_deterministic = 0;
|
||||
afl->skip_deterministic = 1;
|
||||
afl->sync_time = SYNC_TIME;
|
||||
afl->cmplog_lvl = 2;
|
||||
afl->min_length = 1;
|
||||
|
@ -170,7 +170,7 @@ static void usage(u8 *argv0, int more_help) {
|
||||
" -g minlength - set min length of generated fuzz input (default: 1)\n"
|
||||
" -G maxlength - set max length of generated fuzz input (default: "
|
||||
"%lu)\n"
|
||||
" -D - enable deterministic fuzzing (once per queue entry)\n"
|
||||
" -D - enable (a new) effective deterministic fuzzing\n"
|
||||
" -L minutes - use MOpt(imize) mode and set the time limit for "
|
||||
"entering the\n"
|
||||
" pacemaker mode (minutes of no new finds). 0 = "
|
||||
@ -955,16 +955,22 @@ int main(int argc, char **argv_orig, char **envp) {
|
||||
|
||||
break;
|
||||
|
||||
case 'D': /* no deterministic */
|
||||
|
||||
afl->skip_deterministic = 1;
|
||||
break;
|
||||
|
||||
case 'd': /* partial deterministic */
|
||||
case 'D': /* partial deterministic */
|
||||
|
||||
afl->skip_deterministic = 0;
|
||||
break;
|
||||
|
||||
case 'd': /* no deterministic */
|
||||
|
||||
// this is the default and currently a lot of infrastructure enforces
|
||||
// it (e.g. clusterfuzz, fuzzbench) based on that this feature
|
||||
// originally was bad performance wise. We now have a better
|
||||
// implementation, hence if it is activated, we do not want to
|
||||
// deactivate it by such setups.
|
||||
|
||||
// afl->skip_deterministic = 1;
|
||||
break;
|
||||
|
||||
case 'B': /* load bitmap */
|
||||
|
||||
/* This is a secret undocumented option! It is useful if you find
|
||||
@ -1424,11 +1430,11 @@ int main(int argc, char **argv_orig, char **envp) {
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
// silently disable deterministic mutation if custom mutators are used
|
||||
if (!afl->skip_deterministic && afl->afl_env.afl_custom_mutator_only) {
|
||||
|
||||
FATAL(
|
||||
"Using -D determinstic fuzzing is incompatible with "
|
||||
"AFL_CUSTOM_MUTATOR_ONLY!");
|
||||
afl->skip_deterministic = 1;
|
||||
|
||||
}
|
||||
|
||||
|
@ -38,7 +38,7 @@ test -e test-custom-mutator.c -a -e ${CUSTOM_MUTATOR_PATH}/example.c -a -e ${CUS
|
||||
# Run afl-fuzz w/ the C mutator
|
||||
$ECHO "$GREY[*] running afl-fuzz for the C mutator, this will take approx 10 seconds"
|
||||
{
|
||||
AFL_CUSTOM_MUTATOR_LIBRARY=./libexamplemutator.so AFL_CUSTOM_MUTATOR_ONLY=1 ../afl-fuzz -V07 -m ${MEM_LIMIT} -i in -o out -- ./test-custom-mutator >>errors 2>&1
|
||||
AFL_CUSTOM_MUTATOR_LIBRARY=./libexamplemutator.so AFL_CUSTOM_MUTATOR_ONLY=1 ../afl-fuzz -V07 -m ${MEM_LIMIT} -i in -o out -d -- ./test-custom-mutator >>errors 2>&1
|
||||
} >>errors 2>&1
|
||||
|
||||
# Check results
|
||||
@ -58,7 +58,7 @@ test -e test-custom-mutator.c -a -e ${CUSTOM_MUTATOR_PATH}/example.c -a -e ${CUS
|
||||
# Run afl-fuzz w/ multiple C mutators
|
||||
$ECHO "$GREY[*] running afl-fuzz with multiple custom C mutators, this will take approx 10 seconds"
|
||||
{
|
||||
AFL_CUSTOM_MUTATOR_LIBRARY="./libexamplemutator.so;./libexamplemutator2.so" AFL_CUSTOM_MUTATOR_ONLY=1 ../afl-fuzz -V07 -m ${MEM_LIMIT} -i in -o out -- ./test-multiple-mutators >>errors 2>&1
|
||||
AFL_CUSTOM_MUTATOR_LIBRARY="./libexamplemutator.so;./libexamplemutator2.so" AFL_CUSTOM_MUTATOR_ONLY=1 ../afl-fuzz -V07 -m ${MEM_LIMIT} -i in -o out -d -- ./test-multiple-mutators >>errors 2>&1
|
||||
} >>errors 2>&1
|
||||
|
||||
test -n "$( ls out/default/crashes/id:000000* 2>/dev/null )" && { # TODO: update here
|
||||
|
Loading…
x
Reference in New Issue
Block a user