Age | Commit message (Collapse) | Author | |
---|---|---|---|
2020-06-29 | fix autodict | van Hauser | |
2020-06-26 | original fix for calibration error | Andrea Fioraldi | |
2020-06-25 | shmem release fix | van Hauser | |
2020-06-25 | initialized variable | Dominik Maier | |
2020-06-25 | Merge pull request #425 from dgmelski/fix-recalibration | Andrea Fioraldi | |
Fix saturated maps & stability cliff in recalibration | |||
2020-06-25 | add seek power schedule, remove update stats in calibration, fix help output | van Hauser | |
2020-06-24 | Fix saturated maps & stability cliff in recalibration | David Melski | |
I have observed two problems: 1. A sudden "stability cliff" where stability drops precipitously. 2. A sudden jump to a 100% saturated "density map". Both issues are due to attempted "recalibration" of a case at the beginning of fuzz_one_original() or mopt_common_fuzzing(). See the comments "CALIBRATION (only if failed earlier on)" in those functions and the subsequent call to calibrate_case(). At those calls to calibrate_case(), afl->fsrv.trace_bits holds trace_bits for a run of the SUT on a prior queue entry. However, calibrate_case() may use the trace_bits as if they apply to the current queue entry (afl->queue_cur). Most often this bug causes the "stability cliff". Trace bits are compared for runs on distinct inputs, which can be very different. The result is a sudden drop in stability. Sometimes it leads to the "saturated map" problem. A saturated density map arises if the trace bits on the previous entry were "simplified" by simplify_trace(). Simplified traces only contain the values 1 and 128. They are meant to be compared against virgin_crashes and virgin_tmouts. However, this bug causes the (stale) simplified trace to be compared against virgin_bits during a call to has_new_bits(), which causes every byte in vigin_bits to be something other than 255. The overall map density is determined by the percentage of bytes not 255, which will be 100%. Worse, AFL++ will be unable to detect novel occurrences of edge counts 1 and 128 going forward. This patch avoids the above issues by clearing q->exec_cksum when calibration fails. Recalibrations are forced to start with a fresh trace on the queue entry. Thanks to @andreafioraldi for suggesting the current, improved patch. | |||
2020-06-24 | create .synced/NAMES.last to document last sync attempts | van Hauser | |
2020-06-22 | allow /tmp | van Hauser | |
2020-06-21 | fix unicorn mode for CFLAGS | van Hauser | |
2020-06-13 | code format | van Hauser | |
2020-06-13 | fix shmem | van Hauser | |
2020-06-12 | switch to faster and better hash + random | van Hauser | |
2020-06-04 | fix cmplog for shmem persistent mode | van Hauser | |
2020-06-03 | switch shmem_len to the map | van Hauser | |
2020-06-03 | OpenBSD: add missing limits.h header for PATH_MAX | hexcoder- | |
2020-06-03 | code format | van Hauser | |
2020-06-02 | got rid of questionable phrasing | Dominik Maier | |
2020-05-31 | starting shmap support for unicorn | Dominik Maier | |
2020-05-25 | persistent mode: shared memory test case transfer | van Hauser | |
2020-05-20 | better sync - lesser and better imports | van Hauser | |
2020-05-19 | forgot the unlink ... | van Hauser | |
2020-05-19 | if no master is present a slave becomes a temporary master | van Hauser | |
2020-05-15 | change: slaves only sync from masters | van Hauser | |
2020-05-13 | fix GNUmakefile | van Hauser | |
2020-05-13 | Add post library API as custom mutator and rename pre_save | rish9101 | |
2020-05-13 | move has_new_bits for better performance | van Hauser | |
2020-05-09 | custom mutator code enhancements and code-format | van Hauser | |
2020-05-08 | Support multiple custom mutators (#282) | Rishi Ranjan | |
* Make a list of custom mutators using env variable * Set up multiple custom mutators * Add destroy custom mutator and changes to load_custom_mutator * Use array instead of list, make changes to afl-fuzz-one for multiple mutators * Make change to fuzz-one custom_queue_get to support multiple mutators * Modify custom python mutator support * Fix bug * Fix missing afl->mutator->data * Revert to list with max count * Change custom_pre_save hook and code format * Free custom_mutator struct in the list * Add testcase for multiple custom mutators * Resolve merge conflict | |||
2020-05-07 | fix static and profiling compilation and add profiling calculation | van Hauser | |
2020-04-26 | fix negative stability bug (hopefully) | van Hauser | |
2020-04-19 | clang-tidy readability-braces (#323) | Dominik Maier | |
2020-04-17 | fix plot_data output and code-format | van Hauser | |
2020-04-16 | renamed duplicated func names | Dominik Maier | |
2020-04-16 | decoupled run and classify | Dominik Maier | |
2020-04-16 | code-format | Dominik Maier | |
2020-04-15 | somewhat unified write_to_testcase | Dominik Maier | |
2020-04-15 | fix document mode | van Hauser | |
2020-04-15 | changed run_target | Dominik Maier | |
2020-04-14 | code format | Dominik Maier | |
2020-04-14 | unified forkservered run_target, fixes #308 | Dominik Maier | |
2020-04-13 | allow -L -1 to enable mopt in parallel to classic mutation | van Hauser | |
2020-04-13 | fix all cmplog errors | Andrea Fioraldi | |
2020-04-13 | fix some cmplog refactoring bugs | Andrea Fioraldi | |
2020-04-12 | Better solution for ARM64 build fix (#315) | David CARLIER | |
2020-04-12 | build on arm64 fix. tested on Android. (#313) | David CARLIER | |
2020-04-11 | more refactoring and update changelog | van Hauser | |
2020-04-11 | refactored cmplog | Dominik Maier | |
2020-04-10 | LTO optimization, variable map size, autodictionary (#307) | van Hauser | |
* lto module clean-up * step 1/3 * step 1/3 completed * if tmp is ever made non-static * parts 2 and 3 - autodictionary is complete * variable map_size support * variable map size: changed overlooked functions * remove debug for autodict * 64 bit alignment of map size * fix review comments * force 64 bit alignment on both sides * typo | |||
2020-04-10 | resize fix + code format | Dominik Maier | |