Commit Graph

175 Commits

Author SHA1 Message Date
67dac15226 Merge branch 'debug' into taint 2020-08-11 03:40:12 +02:00
a422fcaa40 fixed minor inconsistencies, reenabled warnings 2020-08-10 19:04:51 +02:00
3ecafde29d increase stack size 2020-08-10 13:59:30 +02:00
8428b18d2a fix another segfault 2020-08-10 13:30:25 +02:00
9ec223c844 final touches for first testing 2020-08-09 23:47:51 +02:00
e99d7e9730 integration in fuzz_one 2020-08-09 20:24:56 +02:00
b60663c031 taint integration done 2020-08-09 18:48:12 +02:00
32db31b555 fixes 2020-08-09 12:35:52 +02:00
a1129b67c2 changes 2020-08-09 12:15:36 +02:00
0bb59ba116 code format 2020-08-09 01:09:26 +02:00
e4a0237cbc step 1 2020-08-09 00:35:12 +02:00
22d3a5e90a enabled Wextra, fixed bugs 2020-08-07 16:55:58 +02:00
f30ca1476c fix short write 2020-08-05 11:17:15 +02:00
fc401f1acc fix post process check 2020-07-30 11:51:13 +02:00
35a448ee92 enhance for custom trim buffer 2020-07-30 09:20:22 +02:00
3f9f00a798 Merge pull request #460 from rish9101/dev
Add post-process functionality in write_with_gap
2020-07-30 09:15:42 +02:00
565da10a8f Minor change to write_with_gap 2020-07-29 01:05:05 +05:30
9cddbc0420 add -F option to sync to foreign fuzzer queues 2020-07-24 12:26:52 +02:00
2fa31dab60 Remove reduntant copying from write_with_gap function 2020-07-23 23:48:26 +05:30
4898db80cb Add post-process functionality in write_with_gap 2020-07-23 23:16:04 +05:30
e5e485fcdb fix autodict 2020-06-29 00:58:05 +02:00
976e99b1d4 original fix for calibration error 2020-06-26 10:17:21 +02:00
171b1923e9 shmem release fix 2020-06-25 22:02:02 +02:00
c8f60a7fbf initialized variable 2020-06-25 17:25:16 +02:00
4a3305c007 Merge pull request #425 from dgmelski/fix-recalibration
Fix saturated maps & stability cliff in recalibration
2020-06-25 15:16:10 +02:00
b5573b3adb add seek power schedule, remove update stats in calibration, fix help output 2020-06-25 10:33:59 +02:00
d540971443 Fix saturated maps & stability cliff in recalibration
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 17:59:04 -04:00
bdc8e3b79e create .synced/NAMES.last to document last sync attempts 2020-06-24 11:09:33 +02:00
a49b5ef072 allow /tmp 2020-06-22 07:16:24 +02:00
5cad92e57e fix unicorn mode for CFLAGS 2020-06-21 18:07:30 +02:00
bfe5b88e78 code format 2020-06-13 14:28:42 +02:00
fc26001b50 fix shmem 2020-06-13 13:47:43 +02:00
a632c00b0d switch to faster and better hash + random 2020-06-12 16:08:49 +02:00
a9348e0acc fix cmplog for shmem persistent mode 2020-06-04 16:31:53 +02:00
dd0ca7335f switch shmem_len to the map 2020-06-03 15:49:23 +02:00
686d8823eb OpenBSD: add missing limits.h header for PATH_MAX 2020-06-03 17:43:33 +02:00
fc164e4709 code format 2020-06-03 10:50:49 +02:00
83112ed5e0 got rid of questionable phrasing 2020-06-02 14:54:24 +02:00
ee14785f68 starting shmap support for unicorn 2020-05-31 04:13:41 +02:00
707145c491 persistent mode: shared memory test case transfer 2020-05-25 16:40:55 +02:00
c456e20750 better sync - lesser and better imports 2020-05-20 23:12:33 +02:00
0ed767fac5 forgot the unlink ... 2020-05-19 19:54:10 +02:00
25fbec6638 if no master is present a slave becomes a temporary master 2020-05-19 19:51:54 +02:00
d536ddc240 change: slaves only sync from masters 2020-05-15 09:27:15 +02:00
8cc5442401 fix GNUmakefile 2020-05-13 18:20:06 +02:00
9627458ecc Add post library API as custom mutator and rename pre_save 2020-05-13 18:59:12 +05:30
f8b3d34225 move has_new_bits for better performance 2020-05-13 00:41:24 +02:00
fa84e52af0 custom mutator code enhancements and code-format 2020-05-09 11:35:54 +02:00
190f3024da Support multiple custom mutators (#282)
* 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-08 20:08:27 +02:00
02887dc164 fix static and profiling compilation and add profiling calculation 2020-05-07 14:09:58 +02:00