Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1079)

Side by Side Diff: third_party/afl/src/docs/ChangeLog

Issue 2075883002: Add American Fuzzy Lop (afl) to third_party/afl/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix nits Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « third_party/afl/src/docs/COPYING ('k') | third_party/afl/src/docs/INSTALL » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 =========
2 ChangeLog
3 =========
4
5 This is the list of all noteworthy changes made in every public release of
6 the tool. See README for the general instruction manual.
7
8 ----------------
9 Staying informed
10 ----------------
11
12 Want to stay in the loop on major new features? Join our mailing list by
13 sending a mail to <afl-users+subscribe@googlegroups.com>.
14
15 Not sure if you should upgrade? The lowest currently recommended version
16 is 2.07b. If you're stuck on an earlier release, it's strongly advisable
17 to get on with the times.
18
19 --------------
20 Version 2.14b:
21 --------------
22
23 - Added FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION as a macro defined when
24 compiling with afl-gcc and friends. Suggested by Kostya Serebryany.
25
26 - Refreshed some of the non-x86 docs.
27
28 --------------
29 Version 2.13b:
30 --------------
31
32 - Fixed a spurious build test error with trace-pc and llvm_mode/Makefile.
33 Spotted by Markus Teufelberger.
34
35 - Fixed a cosmetic issue with afl-whatsup. Spotted by Brandon Perry.
36
37 --------------
38 Version 2.12b:
39 --------------
40
41 - Fixed a minor issue in afl-tmin that can make alphabet minimization less
42 efficient during passes > 1. Spotted by Daniel Binderman.
43
44 --------------
45 Version 2.11b:
46 --------------
47
48 - Fixed a minor typo in instrumented_cmp, spotted by Hanno Eissfeldt.
49
50 - Added a missing size check for deterministic insertion steps.
51
52 - Made an improvement to afl-gotcpu when -Z not used.
53
54 - Fixed a typo in post_library_png.so.c in experimental/. Spotted by Kostya
55 Serebryany.
56
57 --------------
58 Version 2.10b:
59 --------------
60
61 - Fixed a minor core counting glitch, reported by Tyler Nighswander.
62
63 --------------
64 Version 2.09b:
65 --------------
66
67 - Made several documentation updates.
68
69 - Added some visual indicators to promote and simplify the use of -Z.
70
71 --------------
72 Version 2.08b:
73 --------------
74
75 - Added explicit support for -m32 and -m64 for llvm_mode. Inspired by
76 a request from Christian Holler.
77
78 - Added a new benchmarking option, as requested by Kostya Serebryany.
79
80 --------------
81 Version 2.07b:
82 --------------
83
84 - Added CPU affinity option (-Z) on Linux. With some caution, this can
85 offer a significant (10%+) performance bump and reduce jitter.
86 Proposed by Austin Seipp.
87
88 - Updated afl-gotcpu to use CPU affinity where supported.
89
90 - Fixed confusing CPU_TARGET error messages with QEMU build. Spotted by
91 Daniel Komaromy and others.
92
93 --------------
94 Version 2.06b:
95 --------------
96
97 - Worked around LLVM persistent mode hiccups with -shared code.
98 Contributed by Christian Holler.
99
100 - Added __AFL_COMPILER as a convenient way to detect that something is
101 built under afl-gcc / afl-clang / afl-clang-fast and enable custom
102 optimizations in your code. Suggested by Pedro Corte-Real.
103
104 - Upstreamed several minor changes developed by Franjo Ivancic to
105 allow AFL to be built as a library. This is fairly use-specific and
106 may have relatively little appeal to general audiences.
107
108 --------------
109 Version 2.05b:
110 --------------
111
112 - Put __sanitizer_cov_module_init & co behind #ifdef to avoid problems
113 with ASAN. Spotted by Christian Holler.
114
115 --------------
116 Version 2.04b:
117 --------------
118
119 - Removed indirect-calls coverage from -fsanitize-coverage (since it's
120 redundant). Spotted by Kostya Serebryany.
121
122 --------------
123 Version 2.03b:
124 --------------
125
126 - Added experimental -fsanitize-coverage=trace-pc support that goes with
127 some recent additions to LLVM, as implemented by Kostya Serebryany.
128 Right now, this is cumbersome to use with common build systems, so
129 the mode remains undocumented.
130
131 - Made several substantial improvements to better support non-standard
132 map sizes in LLVM mode.
133
134 - Switched LLVM mode to thread-local execution tracing, which may offer
135 better results in some multithreaded apps.
136
137 - Fixed a minor typo, reported by Heiko Eissfeldt.
138
139 - Force-disabled symbolization for ASAN, as suggested by Christian Holler.
140
141 - AFL_NOX86 renamed to AFL_NO_X86 for consistency.
142
143 - Added AFL_LD_PRELOAD to allow LD_PRELOAD to be set for targets without
144 affecting AFL itself. Suggested by Daniel Godas-Lopez.
145
146 --------------
147 Version 2.02b:
148 --------------
149
150 - Fixed a "lcamtuf can't count to 16" bug in the havoc stage. Reported
151 by Guillaume Endignoux.
152
153 --------------
154 Version 2.01b:
155 --------------
156
157 - Made an improvement to cycle counter color coding, based on feedback
158 from Shai Sarfaty.
159
160 - Added a mention of aflize to sister_projects.txt.
161
162 - Fixed an installation issue with afl-as, as spotted by ilovezfs.
163
164 --------------
165 Version 2.00b:
166 --------------
167
168 - Cleaned up color handling after a minor snafu in 1.99b (affecting some
169 terminals).
170
171 - Made minor updates to the documentation.
172
173 --------------
174 Version 1.99b:
175 --------------
176
177 - Substantially revamped the output and the internal logic of afl-analyze.
178
179 - Cleaned up some of the color handling code and added support for
180 background colors.
181
182 - Removed some stray files (oops).
183
184 - Updated docs to better explain afl-analyze.
185
186 --------------
187 Version 1.98b:
188 --------------
189
190 - Improved to "boring string" detection in afl-analyze.
191
192 - Added technical_details.txt for afl-analyze.
193
194 --------------
195 Version 1.97b:
196 --------------
197
198 - Added afl-analyze, a nifty tool to analyze the structure of a file
199 based on the feedback from AFL instrumentation. This is kinda experimental,
200 so field reports welcome.
201
202 - Added a mention of afl-cygwin.
203
204 - Fixed a couple of typos, as reported by Jakub Wilk and others.
205
206 --------------
207 Version 1.96b:
208 --------------
209
210 - Added -fpic to CFLAGS for the clang plugin, as suggested by Hanno Boeck.
211
212 - Made another clang change (IRBuilder) suggested by Jeff Trull.
213
214 - Fixed several typos, spotted by Jakub Wilk.
215
216 - Added support for AFL_SHUFFLE_QUEUE, based on discussions with
217 Christian Holler.
218
219 --------------
220 Version 1.95b:
221 --------------
222
223 - Fixed a harmless bug when handling -B. Spotted by Jacek Wielemborek.
224
225 - Made the exit message a bit more accurate when AFL_EXIT_WHEN_DONE is set.
226
227 - Added some error-checking for old-style forkserver syntax. Suggested by
228 Ben Nagy.
229
230 - Switched from exit() to _exit() in injected code to avoid snafus with
231 destructors in C++ code. Spotted by sunblate.
232
233 - Made a change to avoid spuriously setting __AFL_SHM_ID when
234 AFL_DUMB_FORKSRV is set in conjunction with -n. Spotted by Jakub Wilk.
235
236 --------------
237 Version 1.94b:
238 --------------
239
240 - Changed allocator alignment to improve support for non-x86 systems (now
241 that llvm_mode makes this more feasible).
242
243 - Fixed a minor typo in afl-cmin. Spotted by Jonathan Neuschafer.
244
245 - Fixed an obscure bug that would affect people trying to use afl-gcc
246 with $TMP set but $TMPDIR absent. Spotted by Jeremy Barnes.
247
248 --------------
249 Version 1.93b:
250 --------------
251
252 - Hopefully fixed a problem with MacOS X and persistent mode, spotted by
253 Leo Barnes.
254
255 --------------
256 Version 1.92b:
257 --------------
258
259 - Made yet another C++ fix (namespaces). Reported by Daniel Lockyer.
260
261 --------------
262 Version 1.91b:
263 --------------
264
265 - Made another fix to make 1.90b actually work properly with C++ (d'oh).
266 Problem spotted by Daniel Lockyer.
267
268 --------------
269 Version 1.90b:
270 --------------
271
272 - Fixed a minor typo spotted by Kai Zhao; and made several other minor updates
273 to docs.
274
275 - Updated the project URL for python-afl. Requested by Jakub Wilk.
276
277 - Fixed a potential problem with deferred mode signatures getting optimized
278 out by the linker (with --gc-sections).
279
280 --------------
281 Version 1.89b:
282 --------------
283
284 - Revamped the support for persistent and deferred forkserver modes.
285 Both now feature simpler syntax and do not require companion env
286 variables. Suggested by Jakub Wilk.
287
288 - Added a bit more info about afl-showmap. Suggested by Jacek Wielemborek.
289
290 --------------
291 Version 1.88b:
292 --------------
293
294 - Made AFL_EXIT_WHEN_DONE work in non-tty mode. Issue spotted by
295 Jacek Wielemborek.
296
297 --------------
298 Version 1.87b:
299 --------------
300
301 - Added QuickStartGuide.txt, a one-page quick start doc.
302
303 - Fixed several typos spotted by Dominique Pelle.
304
305 - Revamped several parts of README.
306
307 --------------
308 Version 1.86b:
309 --------------
310
311 - Added support for AFL_SKIP_CRASHES, which is a very hackish solution to
312 the problem of resuming sessions with intermittently crashing inputs.
313
314 - Removed the hard-fail terminal size check, replaced with a dynamic
315 warning shown in place of the UI. Based on feedback from Christian Holler.
316
317 - Fixed a minor typo in show_stats. Spotted by Dingbao Xie.
318
319 --------------
320 Version 1.85b:
321 --------------
322
323 - Fixed a garbled sentence in notes on parallel fuzzing. Thanks to Jakub Wilk.
324
325 - Fixed a minor glitch in afl-cmin. Spotted by Jonathan Foote.
326
327 --------------
328 Version 1.84b:
329 --------------
330
331 - Made SIMPLE_FILES behave as expected when naming backup directories for
332 crashes and hangs.
333
334 - Added the total number of favored paths to fuzzer_stats. Requested by
335 Ben Nagy.
336
337 - Made afl-tmin, afl-fuzz, and afl-cmin reject negative values passed to
338 -t and -m, since they generally won't work as expected.
339
340 - Made a fix for no lahf / sahf support on older versions of FreeBSD.
341 Patch contributed by Alex Moneger.
342
343 --------------
344 Version 1.83b:
345 --------------
346
347 - Fixed a problem with xargs -d on non-Linux systems in afl-cmin. Spotted by
348 teor2345 and Ben Nagy.
349
350 - Fixed an implicit declaration in LLVM mode on MacOS X. Reported by
351 Kai Zhao.
352
353 --------------
354 Version 1.82b:
355 --------------
356
357 - Fixed a harmless but annoying race condition in persistent mode - signal
358 delivery is a bit more finicky than I thought.
359
360 - Updated the documentation to explain persistent mode a bit better.
361
362 - Tweaked AFL_PERSISTENT to force AFL_NO_VAR_CHECK.
363
364 --------------
365 Version 1.81b:
366 --------------
367
368 - Added persistent mode for in-process fuzzing. See llvm_mode/README.llvm.
369 Inspired by Kostya Serebryany and Christian Holler.
370
371 - Changed the in-place resume code to preserve crashes/README.txt. Suggested
372 by Ben Nagy.
373
374 - Included a potential fix for LLVM mode issues on MacOS X, based on the
375 investigation done by teor2345.
376
377 --------------
378 Version 1.80b:
379 --------------
380
381 - Made afl-cmin tolerant of whitespaces in filenames. Suggested by
382 Jonathan Neuschafer and Ketil Froyn.
383
384 - Added support for AFL_EXIT_WHEN_DONE, as suggested by Michael Rash.
385
386 --------------
387 Version 1.79b:
388 --------------
389
390 - Added support for dictionary levels, see testcases/README.testcases.
391
392 - Reworked the SQL dictionary to use levels.
393
394 - Added a note about Preeny.
395
396 --------------
397 Version 1.78b:
398 --------------
399
400 - Added a dictionary for PDF, contributed by Ben Nagy.
401
402 - Added several references to afl-cov, a new tool by Michael Rash.
403
404 - Fixed a problem with crash reporter detection on MacOS X, as reported by
405 Louis Dassy.
406
407 --------------
408 Version 1.77b:
409 --------------
410
411 - Extended the -x option to support single-file dictionaries.
412
413 - Replaced factory-packaged dictionaries with file-based variants.
414
415 - Removed newlines from HTML keywords in testcases/_extras/html/.
416
417 --------------
418 Version 1.76b:
419 --------------
420
421 - Very significantly reduced the number of duplicate execs during
422 deterministic checks, chiefly in int16 and int32 stages. Confirmed
423 identical path yields. This should improve early-stage efficiency by
424 around 5-10%.
425
426 - Reduced the likelihood of duplicate non-deterministic execs by
427 bumping up lowest stacking factor from 1 to 2. Quickly confirmed
428 that this doesn't seem to have significant impact on coverage with
429 libpng.
430
431 - Added a note about integrating afl-fuzz with third-party tools.
432
433 --------------
434 Version 1.75b:
435 --------------
436
437 - Improved argv_fuzzing to allow it to emit empty args. Spotted by Jakub
438 Wilk.
439
440 - afl-clang-fast now defines __AFL_HAVE_MANUAL_INIT. Suggested by Jakub Wilk.
441
442 - Fixed a libtool-related bug with afl-clang-fast that would make some
443 ./configure invocations generate incorrect output. Spotted by Jakub Wilk.
444
445 - Removed flock() on Solaris. This means no locking on this platform,
446 but so be it. Problem reported by Martin Carpenter.
447
448 - Fixed a typo. Reported by Jakub Wilk.
449
450 --------------
451 Version 1.74b:
452 --------------
453
454 - Added an example argv[] fuzzing wrapper in experimental/argv_fuzzing.
455 Reworked the bash example to be faster, too.
456
457 - Clarified llvm_mode prerequisites for FreeBSD.
458
459 - Improved afl-tmin to use /tmp if cwd is not writeable.
460
461 - Removed redundant includes for sys/fcntl.h, which caused warnings with
462 some nitpicky versions of libc.
463
464 - Added a corpus of basic HTML tags that parsers are likely to pay attention
465 to (no attributes).
466
467 - Added EP_EnabledOnOptLevel0 to llvm_mode, so that the instrumentation is
468 inserted even when AFL_DONT_OPTIMIZE=1 is set.
469
470 - Switched qemu_mode to use the newly-released QEMU 2.3.0, which contains
471 a couple of minor bugfixes.
472
473 --------------
474 Version 1.73b:
475 --------------
476
477 - Fixed a pretty stupid bug in effector maps that could sometimes cause
478 AFL to fuzz slightly more than necessary; and in very rare circumstances,
479 could lead to SEGV if eff_map is aligned with page boundary and followed
480 by an unmapped page. Spotted by Jonathan Gray.
481
482 --------------
483 Version 1.72b:
484 --------------
485
486 - Fixed a glitch in non-x86 install, spotted by Tobias Ospelt.
487
488 - Added a minor safeguard to llvm_mode Makefile following a report from
489 Kai Zhao.
490
491 --------------
492 Version 1.71b:
493 --------------
494
495 - Fixed a bug with installed copies of AFL trying to use QEMU mode. Spotted
496 by G.M. Lime.
497
498 - Added last path / crash / hang times to fuzzer_stats, suggested by
499 Richard Hipp.
500
501 - Fixed a typo, thanks to Jakub Wilk.
502
503 --------------
504 Version 1.70b:
505 --------------
506
507 - Modified resumption code to reuse the original timeout value when resuming
508 a session if -t is not given. This prevents timeout creep in continuous
509 fuzzing.
510
511 - Added improved error messages for failed handshake when AFL_DEFER_FORKSRV
512 is set.
513
514 - Made a slight improvement to llvm_mode/Makefile based on feedback from
515 Jakub Wilk.
516
517 - Refreshed several bits of documentation.
518
519 - Added a more prominent note about the MacOS X trade-offs to Makefile.
520
521 --------------
522 Version 1.69b:
523 --------------
524
525 - Added support for deferred initialization in LLVM mode. Suggested by
526 Richard Godbee.
527
528 --------------
529 Version 1.68b:
530 --------------
531
532 - Fixed a minor PRNG glitch that would make the first seconds of a fuzzing
533 job deterministic. Thanks to Andreas Stieger.
534
535 - Made tmp[] static in the LLVM runtime to keep Valgrind happy (this had
536 no impact on anything else). Spotted by Richard Godbee.
537
538 - Clarified the footnote in README.
539
540 --------------
541 Version 1.67b:
542 --------------
543
544 - Made one more correction to llvm_mode Makefile, spotted by Jakub Wilk.
545
546 --------------
547 Version 1.66b:
548 --------------
549
550 - Added CC / CXX support to llvm_mode Makefile. Requested by Charlie Eriksen.
551
552 - Fixed 'make clean' with gmake. Suggested by Oliver Schneider.
553
554 - Fixed 'make -j n clean all'. Suggested by Oliver Schneider.
555
556 - Removed build date and time from banners to give people deterministic
557 builds. Requested by Jakub Wilk.
558
559 --------------
560 Version 1.65b:
561 --------------
562
563 - Fixed a snafu with some leftover code in afl-clang-fast.
564
565 - Corrected even moar typos.
566
567 --------------
568 Version 1.64b:
569 --------------
570
571 - Further simplified afl-clang-fast runtime by reverting .init_array to
572 __attribute__((constructor(0)). This should improve compatibility with
573 non-ELF platforms.
574
575 - Fixed a problem with afl-clang-fast and -shared libraries. Simplified
576 the code by getting rid of .preinit_array and replacing it with a .comm
577 object. Problem reported by Charlie Eriksen.
578
579 - Removed unnecessary instrumentation density adjustment for the LLVM mode.
580 Reported by Jonathan Neuschafer.
581
582 --------------
583 Version 1.63b:
584 --------------
585
586 - Updated cgroups_asan/ with a new version from Sam, made a couple changes
587 to streamline it and keep parallel afl instances in separate groups.
588
589 - Fixed typos, thanks to Jakub Wilk.
590
591 --------------
592 Version 1.62b:
593 --------------
594
595 - Improved the handling of -x in afl-clang-fast,
596
597 - Improved the handling of low AFL_INST_RATIO settings for QEMU and
598 LLVM modes.
599
600 - Fixed the llvm-config bug for good (thanks to Tobias Ospelt).
601
602 --------------
603 Version 1.61b:
604 --------------
605
606 - Fixed an obscure bug compiling OpenSSL with afl-clang-fast. Patch by
607 Laszlo Szekeres.
608
609 - Fixed a 'make install' bug on non-x86 systems, thanks to Tobias Ospelt.
610
611 - Fixed a problem with half-broken llvm-config on Odroid, thanks to
612 Tobias Ospelt. (There is another odd bug there that hasn't been fully
613 fixed - TBD).
614
615 --------------
616 Version 1.60b:
617 --------------
618
619 - Allowed experimental/llvm_instrumentation/ to graduate to llvm_mode/.
620
621 - Removed experimental/arm_support/, since it's completely broken and likely
622 unnecessary with LLVM support in place.
623
624 - Added ASAN cgroups script to experimental/asan_cgroups/, updated existing
625 docs. Courtesy Sam Hakim and David A. Wheeler.
626
627 - Refactored afl-tmin to reduce the number of execs in common use cases.
628 Ideas from Jonathan Neuschafer and Turo Lamminen.
629
630 - Added a note about CLAs at the bottom of README.
631
632 - Renamed testcases_readme.txt to README.testcases for some semblance of
633 consistency.
634
635 - Made assorted updates to docs.
636
637 - Added MEM_BARRIER() to afl-showmap and afl-tmin, just to be safe.
638
639 --------------
640 Version 1.59b:
641 --------------
642
643 - Imported Laszlo Szekeres' experimental LLVM instrumentation into
644 experimental/llvm_instrumentation. I'll work on including it in the
645 "mainstream" version soon.
646
647 - Fixed another typo, thanks to Jakub Wilk.
648
649 --------------
650 Version 1.58b:
651 --------------
652
653 - Added a workaround for abort() behavior in -lpthread programs in QEMU mode.
654 Spotted by Aidan Thornton.
655
656 - Made several documentation updates, including links to the static
657 instrumentation tool (sister_projects.txt).
658
659 --------------
660 Version 1.57b:
661 --------------
662
663 - Fixed a problem with exception handling on some versions of MacOS X.
664 Spotted by Samir Aguiar and Anders Wang Kristensen.
665
666 - Tweaked afl-gcc to use BIN_PATH instead of a fixed string in help
667 messages.
668
669 --------------
670 Version 1.56b:
671 --------------
672
673 - Renamed related_work.txt to historical_notes.txt.
674
675 - Made minor edits to the ASAN doc.
676
677 - Added docs/sister_projects.txt with a list of inspired or closely
678 related utilities.
679
680 --------------
681 Version 1.55b:
682 --------------
683
684 - Fixed a glitch with afl-showmap opening /dev/null with O_RDONLY when
685 running in quiet mode. Spotted by Tyler Nighswander.
686
687 --------------
688 Version 1.54b:
689 --------------
690
691 - Added another postprocessor example for PNG.
692
693 - Made a cosmetic fix to realloc() handling in experimental/post_library/,
694 suggested by Jakub Wilk.
695
696 - Improved -ldl handling. Suggested by Jakub Wilk.
697
698 --------------
699 Version 1.53b:
700 --------------
701
702 - Fixed an -l ordering issue that is apparently still a problem on Ubuntu.
703 Spotted by William Robinet.
704
705 --------------
706 Version 1.52b:
707 --------------
708
709 - Added support for file format postprocessors. Requested by Ben Nagy. This
710 feature is intentionally buried, since it's fairly easy to misuse and
711 useful only in some scenarios. See experimental/post_library/.
712
713 --------------
714 Version 1.51b:
715 --------------
716
717 - Made it possible to properly override LD_BIND_NOW after one very unusual
718 report of trouble.
719
720 - Cleaned up typos, thanks to Jakub Wilk.
721
722 - Fixed a bug in AFL_DUMB_FORKSRV.
723
724 --------------
725 Version 1.50b:
726 --------------
727
728 - Fixed a flock() bug that would prevent dir reuse errors from kicking
729 in every now and then.
730
731 - Renamed references to ppvm (the project is now called recidivm).
732
733 - Made improvements to file descriptor handling to avoid leaving some fds
734 unnecessarily open in the child process.
735
736 - Fixed a typo or two.
737
738 --------------
739 Version 1.49b:
740 --------------
741
742 - Added code to save original command line in fuzzer_stats and
743 crashes/README.txt. Also saves fuzzer version in fuzzer_stats.
744 Requested by Ben Nagy.
745
746 --------------
747 Version 1.48b:
748 --------------
749
750 - Fixed a bug with QEMU fork server crashes when translation is attempted
751 after a jump to an invalid pointer in the child process (i.e., after
752 bumping into a particularly nasty security bug in the tested binary).
753 Reported by Tyler Nighswander.
754
755 --------------
756 Version 1.47b:
757 --------------
758
759 - Fixed a bug with afl-cmin in -Q mode complaining about binary being not
760 instrumented. Thanks to Jonathan Neuschafer for the bug report.
761
762 - Fixed another bug with argv handling for afl-fuzz in -Q mode. Reported
763 by Jonathan Neuschafer.
764
765 - Improved the use of colors when showing crash counts in -C mode.
766
767 --------------
768 Version 1.46b:
769 --------------
770
771 - Improved instrumentation performance on 32-bit systems by getting rid of
772 xor-swap (oddly enough, xor-swap is still faster on 64-bit) and tweaking
773 alignment.
774
775 - Made path depth numbers more accurate with imported test cases.
776
777 --------------
778 Version 1.45b:
779 --------------
780
781 - Added support for SIMPLE_FILES in config.h for folks who don't like
782 descriptive file names. Generates very simple names without colons,
783 commas, plus signs, dashes, etc.
784
785 - Replaced zero-sized files with symlinks in the variable behavior state
786 dir to simplify examining the relevant test cases.
787
788 - Changed the period of limited-range block ops from 5 to 10 minutes based
789 on a couple of experiments. The basic goal of this delay timer behavior
790 is to better support jobs that are seeded with completely invalid files,
791 in which case, the first few queue cycles may be completed very quickly
792 without discovering new paths. Should have no effect on well-seeded jobs.
793
794 - Made several minor updates to docs.
795
796 --------------
797 Version 1.44b:
798 --------------
799
800 - Corrected two bungled attempts to get the -C mode work properly
801 with afl-cmin (accounting for the short-lived releases tagged 1.42 and
802 1.43b) - sorry.
803
804 - Removed AFL_ALLOW_CRASHES in favor of the -C mode in said tool.
805
806 - Said goodbye to Hello Kitty, as requested by Padraig Brady.
807
808 --------------
809 Version 1.41b:
810 --------------
811
812 - Added AFL_ALLOW_CRASHES=1 to afl-cmin. Allows crashing inputs in the
813 output corpus. Changed the default behavior to disallow it.
814
815 - Made the afl-cmin output dir default to 0700, not 0755, to be consistent
816 with afl-fuzz; documented the rationale for 0755 in afl-plot.
817
818 - Lowered the output dir reuse time limit to 25 minutes as a dice-roll
819 compromise after a discussion on afl-users@.
820
821 - Made afl-showmap accept -o /dev/null without borking out.
822
823 - Added support for crash / hang info in exit codes of afl-showmap.
824
825 - Tweaked block operation scaling to also factor in ballpark run time
826 in cases where queue passes take very little time.
827
828 - Fixed typos and made improvements to several docs.
829
830 --------------
831 Version 1.40b:
832 --------------
833
834 - Switched to smaller block op sizes during the first passes over the
835 queue. Helps keep test cases small.
836
837 - Added memory barrier for run_target(), just in case compilers get
838 smarter than they are today.
839
840 - Updated a bunch of docs.
841
842 --------------
843 Version 1.39b:
844 --------------
845
846 - Added the ability to skip inputs by sending SIGUSR1 to the fuzzer.
847
848 - Reworked several portions of the documentation.
849
850 - Changed the code to reset splicing perf scores between runs to keep
851 them closer to intended length.
852
853 - Reduced the minimum value of -t to 5 for afl-fuzz (~200 exec/sec)
854 and to 10 for auxiliary tools (due to the absence of a fork server).
855
856 - Switched to more aggressive default timeouts (rounded up to 25 ms
857 versus 50 ms - ~40 execs/sec) and made several other cosmetic changes
858 to the timeout code.
859
860 --------------
861 Version 1.38b:
862 --------------
863
864 - Fixed a bug in the QEMU build script, spotted by William Robinet.
865
866 - Improved the reporting of skipped bitflips to keep the UI counters a bit
867 more accurate.
868
869 - Cleaned up related_work.txt and added some non-goals.
870
871 - Fixed typos, thanks to Jakub Wilk.
872
873 --------------
874 Version 1.37b:
875 --------------
876
877 - Added effector maps, which detect regions that do not seem to respond
878 to bitflips and subsequently exclude them from more expensive steps
879 (arithmetics, known ints, etc). This should offer significant performance
880 improvements with quite a few types of text-based formats, reducing the
881 number of deterministic execs by a factor of 2 or so.
882
883 - Cleaned up mem limit handling in afl-cmin.
884
885 - Switched from uname -i to uname -m to work around Gentoo-specific
886 issues with coreutils when building QEMU. Reported by William Robinet.
887
888 - Switched from PID checking to flock() to detect running sessions.
889 Problem, against all odds, bumped into by Jakub Wilk.
890
891 - Added SKIP_COUNTS and changed the behavior of COVERAGE_ONLY in config.h.
892 Useful only for internal benchmarking.
893
894 - Made improvements to UI refresh rates and exec/sec stats to make them
895 more stable.
896
897 - Made assorted improvements to the documentation and to the QEMU build
898 script.
899
900 - Switched from perror() to strerror() in error macros, thanks to Jakub
901 Wilk for the nag.
902
903 - Moved afl-cmin back to bash, wasn't thinking straight. It has to stay
904 on bash because other shells may have restrictive limits on array sizes.
905
906 --------------
907 Version 1.36b:
908 --------------
909
910 - Switched afl-cmin over to /bin/sh. Thanks to Jonathan Gray.
911
912 - Fixed an off-by-one bug in queue limit check when resuming sessions
913 (could cause NULL ptr deref if you are *really* unlucky).
914
915 - Fixed the QEMU script to tolerate i686 if returned by uname -i. Based on
916 a problem report from Sebastien Duquette.
917
918 - Added multiple references to Jakub's ppvm tool.
919
920 - Made several minor improvements to the Makefile.
921
922 - Believe it or not, fixed some typos. Thanks to Jakub Wilk.
923
924 --------------
925 Version 1.35b:
926 --------------
927
928 - Cleaned up regular expressions in some of the scripts to avoid errors
929 on *BSD systems. Spotted by Jonathan Gray.
930
931 --------------
932 Version 1.34b:
933 --------------
934
935 - Performed a substantial documentation and program output cleanup to
936 better explain the QEMU feature.
937
938 --------------
939 Version 1.33b:
940 --------------
941
942 - Added support for AFL_INST_RATIO and AFL_INST_LIBS in the QEMU mode.
943
944 - Fixed a stack allocation crash in QEMU mode (bug in QEMU, fixed with
945 an extra patch applied to the downloaded release).
946
947 - Added code to test the QEMU instrumentation once the afl-qemu-trace
948 binary is built.
949
950 - Modified afl-tmin and afl-showmap to search $PATH for binaries and to
951 better handle QEMU support.
952
953 - Added a check for instrumented binaries when passing -Q to afl-fuzz.
954
955 --------------
956 Version 1.32b:
957 --------------
958
959 - Fixed 'make install' following the QEMU changes. Spotted by Hanno Boeck.
960
961 - Fixed EXTRA_PAR handling in afl-cmin.
962
963 --------------
964 Version 1.31b:
965 --------------
966
967 - Hallelujah! Thanks to Andrew Griffiths, we now support very fast, black-box
968 instrumentation of binary-only code. See qemu_mode/README.qemu.
969
970 To use this feature, you need to follow the instructions in that
971 directory and then run afl-fuzz with -Q.
972
973 --------------
974 Version 1.30b:
975 --------------
976
977 - Added -s (summary) option to afl-whatsup. Suggested by Jodie Cunningham.
978
979 - Added a sanity check in afl-tmin to detect minimization to zero len or
980 excess hangs.
981
982 - Fixed alphabet size counter in afl-tmin.
983
984 - Slightly improved the handling of -B in afl-fuzz.
985
986 - Fixed process crash messages with -m none.
987
988 --------------
989 Version 1.29b:
990 --------------
991
992 - Improved the naming of test cases when orig: is already present in the file
993 name.
994
995 - Made substantial improvements to technical_details.txt.
996
997 --------------
998 Version 1.28b:
999 --------------
1000
1001 - Made a minor tweak to the instrumentation to preserve the directionality
1002 of tuples (i.e., A -> B != B -> A) and to maintain the identity of tight
1003 loops (A -> A). You need to recompile targeted binaries to leverage this.
1004
1005 - Cleaned up some of the afl-whatsup stats.
1006
1007 - Added several sanity checks to afl-cmin.
1008
1009 --------------
1010 Version 1.27b:
1011 --------------
1012
1013 - Made afl-tmin recursive. Thanks to Hanno Boeck for the tip.
1014
1015 - Added docs/technical_details.txt.
1016
1017 - Changed afl-showmap search strategy in afl-cmap to just look into the
1018 same place that afl-cmin is executed from. Thanks to Jakub Wilk.
1019
1020 - Removed current_todo.txt and cleaned up the remaining docs.
1021
1022 --------------
1023 Version 1.26b:
1024 --------------
1025
1026 - Added total execs/sec stat for afl-whatsup.
1027
1028 - afl-cmin now auto-selects between cp or ln. Based on feedback from
1029 Even Huus.
1030
1031 - Fixed a typo. Thanks to Jakub Wilk.
1032
1033 - Made afl-gotcpu a bit more accurate by using getrusage instead of
1034 times. Thanks to Jakub Wilk.
1035
1036 - Fixed a memory limit issue during the build process on NetBSD-current.
1037 Reported by Thomas Klausner.
1038
1039 --------------
1040 Version 1.25b:
1041 --------------
1042
1043 - Introduced afl-whatsup, a simple tool for querying the status of
1044 local synced instances of afl-fuzz.
1045
1046 - Added -x compiler to clang options on Darwin. Suggested by Filipe
1047 Cabecinhas.
1048
1049 - Improved exit codes for afl-gotcpu.
1050
1051 - Improved the checks for -m and -t values in afl-cmin. Bug report
1052 from Evan Huus.
1053
1054 --------------
1055 Version 1.24b:
1056 --------------
1057
1058 - Introduced afl-getcpu, an experimental tool to empirically measure
1059 CPU preemption rates. Thanks to Jakub Wilk for the idea.
1060
1061 --------------
1062 Version 1.23b:
1063 --------------
1064
1065 - Reverted one change to afl-cmin that actually made it slower.
1066
1067 --------------
1068 Version 1.22b:
1069 --------------
1070
1071 - Reworked afl-showmap.c to support normal options, including -o, -q,
1072 -e. Also added support for timeouts and memory limits.
1073
1074 - Made changes to afl-cmin and other scripts to accommodate the new
1075 semantics.
1076
1077 - Officially retired AFL_EDGES_ONLY.
1078
1079 - Fixed another typo in afl-tmin, courtesy of Jakub Wilk.
1080
1081 --------------
1082 Version 1.21b:
1083 --------------
1084
1085 - Graduated minimize_corpus.sh to afl-cmin. It is now a first-class
1086 utility bundled with the fuzzer.
1087
1088 - Made significant improvements to afl-cmin to make it faster, more
1089 robust, and more versatile.
1090
1091 - Refactored some of afl-tmin code to make it a bit more readable.
1092
1093 - Made assorted changes to the doc to document afl-cmin and other stuff.
1094
1095 --------------
1096 Version 1.20b:
1097 --------------
1098
1099 - Added AFL_DUMB_FORKSRV, as requested by Jakub Wilk. This works only
1100 in -n mode and allows afl-fuzz to run with "dummy" fork servers that
1101 don't output any instrumentation, but follow the same protocol.
1102
1103 - Renamed AFL_SKIP_CHECKS to AFL_SKIP_BIN_CHECK to make it at least
1104 somewhat descriptive.
1105
1106 - Switched to using clang as the default assembler on MacOS X to work
1107 around Xcode issues with newer builds of clang. Testing and patch by
1108 Nico Weber.
1109
1110 - Fixed a typo (via Jakub Wilk).
1111
1112 --------------
1113 Version 1.19b:
1114 --------------
1115
1116 - Improved exec failure detection in afl-fuzz and afl-showmap.
1117
1118 - Improved Ctrl-C handling in afl-showmap.
1119
1120 - Added afl-tmin, a handy instrumentation-enabled minimizer.
1121
1122 --------------
1123 Version 1.18b:
1124 --------------
1125
1126 - Fixed a serious but short-lived bug in the resumption behavior introduced
1127 in version 1.16b.
1128
1129 - Added -t nn+ mode for soft-skipping timing-out paths.
1130
1131 --------------
1132 Version 1.17b:
1133 --------------
1134
1135 - Fixed a compiler warning introduced in 1.16b for newer versions of GCC.
1136 Thanks to Jakub Wilk and Ilfak Guilfanov.
1137
1138 - Improved the consistency of saving fuzzer_stats, bitmap info, and
1139 auto-dictionaries when aborting fuzzing sessions.
1140
1141 - Made several noticeable performance improvements to deterministic arith
1142 and known int steps.
1143
1144 --------------
1145 Version 1.16b:
1146 --------------
1147
1148 - Added a bit of code to make resumption pick up from the last known
1149 offset in the queue, rather than always rewinding to the start. Suggested
1150 by Jakub Wilk.
1151
1152 - Switched to tighter timeout control for slow programs (3x rather than
1153 5x average exec speed at init).
1154
1155 --------------
1156 Version 1.15b:
1157 --------------
1158
1159 - Added support for AFL_NO_VAR_CHECK to speed up resumption and inhibit
1160 variable path warnings for some programs.
1161
1162 - Made the trimmer run even for variable paths, since there is no special
1163 harm in doing so and it can be very beneficial if the trimming still
1164 pans out.
1165
1166 - Made the UI a bit more descriptive by adding "n/a" instead of "0" in a
1167 couple of corner cases.
1168
1169 --------------
1170 Version 1.14b:
1171 --------------
1172
1173 - Added a (partial) dictionary for JavaScript.
1174
1175 - Added AFL_NO_CPU_RED, as suggested by Jakub Wilk.
1176
1177 - Tweaked the havoc scaling logic added in 1.12b.
1178
1179 --------------
1180 Version 1.13b:
1181 --------------
1182
1183 - Improved the performance of minimize_corpus.sh by switching to a
1184 sort-based approach.
1185
1186 - Made several minor revisions to the docs.
1187
1188 --------------
1189 Version 1.12b:
1190 --------------
1191
1192 - Made an improvement to dictionary generation to avoid runs of identical
1193 bytes.
1194
1195 - Added havoc cycle scaling to help with slow binaries in -d mode. Based on
1196 a thread with Sami Liedes.
1197
1198 - Added AFL_SYNC_FIRST for afl-fuzz. This is useful for those who obsess
1199 over stats, no special purpose otherwise.
1200
1201 - Switched to more robust box drawing codes, suggested by Jakub Wilk.
1202
1203 - Created faster 64-bit variants of several critical-path bitmap functions
1204 (sorry, no difference on 32 bits).
1205
1206 - Fixed moar typos, as reported by Jakub Wilk.
1207
1208 --------------
1209 Version 1.11b:
1210 --------------
1211
1212 - Added a bit more info about dictionary strategies to the status screen.
1213
1214 --------------
1215 Version 1.10b:
1216 --------------
1217
1218 - Revised the dictionary behavior to use insertion and overwrite in
1219 deterministic steps, rather than just the latter. This improves coverage
1220 with SQL and the like.
1221
1222 - Added a mention of "*" in status_screen.txt, as suggested by Jakub Wilk.
1223
1224 --------------
1225 Version 1.09b:
1226 --------------
1227
1228 - Corrected a cosmetic problem with 'extras' stage count not always being
1229 accurate in the stage yields view.
1230
1231 - Fixed a typo reported by Jakub Wilk and made some minor documentation
1232 improvements.
1233
1234 --------------
1235 Version 1.08b:
1236 --------------
1237
1238 - Fixed a div-by-zero bug in the newly-added code when using a dictionary.
1239
1240 --------------
1241 Version 1.07b:
1242 --------------
1243
1244 - Added code that automatically finds and extracts syntax tokens from the
1245 input corpus.
1246
1247 - Fixed a problem with ld dead-code removal option on MacOS X, reported
1248 by Filipe Cabecinhas.
1249
1250 - Corrected minor typos spotted by Jakub Wilk.
1251
1252 - Added a couple of more exotic archive format samples.
1253
1254 --------------
1255 Version 1.06b:
1256 --------------
1257
1258 - Switched to slightly more accurate (if still not very helpful) reporting
1259 of short read and short write errors. These theoretically shouldn't happen
1260 unless you kill the forkserver or run out of disk space. Suggested by
1261 Jakub Wilk.
1262
1263 - Revamped some of the allocator and debug code, adding comments and
1264 cleaning up other mess.
1265
1266 - Tweaked the odds of fuzzing non-favored test cases to make sure that
1267 baseline coverage of all inputs is reached sooner.
1268
1269 --------------
1270 Version 1.05b:
1271 --------------
1272
1273 - Added a dictionary for WebP.
1274
1275 - Made some additional performance improvements to minimize_corpus.sh,
1276 getting deeper into the bash woods.
1277
1278 --------------
1279 Version 1.04b:
1280 --------------
1281
1282 - Made substantial performance improvements to minimize_corpus.sh with
1283 large datasets, albeit at the expense of having to switch back to bash
1284 (other shells may have limits on array sizes, etc).
1285
1286 - Tweaked afl-showmap to support the format used by the new script.
1287
1288 --------------
1289 Version 1.03b:
1290 --------------
1291
1292 - Added code to skip README.txt in the input directory to make the crash
1293 exploration mode work better. Suggested by Jakub Wilk.
1294
1295 - Added a dictionary for SQLite.
1296
1297 --------------
1298 Version 1.02b:
1299 --------------
1300
1301 - Reverted the ./ search path in minimize_corpus.sh because people did
1302 not like it.
1303
1304 - Added very explicit warnings not to run various shell scripts that
1305 read or write to /tmp/ (since this is generally a pretty bad idea on
1306 multi-user systems).
1307
1308 - Added a check for /tmp binaries and -f locations in afl-fuzz.
1309
1310 --------------
1311 Version 1.01b:
1312 --------------
1313
1314 - Added dictionaries for XML and GIF.
1315
1316 --------------
1317 Version 1.00b:
1318 --------------
1319
1320 - Slightly improved the performance of minimize_corpus.sh, especially on
1321 Linux.
1322
1323 - Made a couple of improvements to calibration timeouts for resumed scans.
1324
1325 --------------
1326 Version 0.99b:
1327 --------------
1328
1329 - Fixed minimize_corpus.sh to work with dash, as suggested by Jakub Wilk.
1330
1331 - Modified minimize_corpus.sh to try locate afl-showmap in $PATH and ./.
1332 The first part requested by Jakub Wilk.
1333
1334 - Added support for afl-as --version, as required by one funky build
1335 script. Reported by William Robinet.
1336
1337 --------------
1338 Version 0.98b:
1339 --------------
1340
1341 - Added a dictionary for TIFF.
1342
1343 - Fixed another cosmetic snafu with stage exec counts for -x.
1344
1345 - Switched afl-plot to /bin/sh, since it seems bashism-free. Also tried
1346 to remove any obvious bashisms from other experimental/ scripts,
1347 most notably including minimize_corpus.sh and triage_crashes.sh.
1348 Requested by Jonathan Gray.
1349
1350 --------------
1351 Version 0.97b:
1352 --------------
1353
1354 - Fixed cosmetic issues around the naming of -x strategy files.
1355
1356 - Added a dictionary for JPEG.
1357
1358 - Fixed a very rare glitch when running instrumenting 64-bit code that makes
1359 heavy use of xmm registers that are also touched by glibc.
1360
1361 --------------
1362 Version 0.96b:
1363 --------------
1364
1365 - Added support for extra dictionaries, provided testcases/_extras/png/
1366 as a demo.
1367
1368 - Fixed a minor bug in number formatting routines used by the UI.
1369
1370 - Added several additional PNG test cases that are relatively unlikely
1371 to be hit by chance.
1372
1373 - Fixed afl-plot syntax for gnuplot 5.x. Reported by David Necas.
1374
1375 --------------
1376 Version 0.95b:
1377 --------------
1378
1379 - Cleaned up the OSX ReportCrash code. Thanks to Tobias Ospelt for help.
1380
1381 - Added some extra tips for AFL_NO_FORKSERVER on OSX.
1382
1383 - Refreshed the INSTALL file.
1384
1385 --------------
1386 Version 0.94b:
1387 --------------
1388
1389 - Added in-place resume (-i-) to address a common user complaint.
1390
1391 - Added an awful workaround for ReportCrash on MacOS X. Problem
1392 spotted by Joseph Gentle.
1393
1394 --------------
1395 Version 0.93b:
1396 --------------
1397
1398 - Fixed the link() workaround, as reported by Jakub Wilk.
1399
1400 --------------
1401 Version 0.92b:
1402 --------------
1403
1404 - Added support for reading test cases from another filesystem.
1405 Requested by Jakub Wilk.
1406
1407 - Added pointers to the mailing list.
1408
1409 - Added a sample PDF document.
1410
1411 --------------
1412 Version 0.91b:
1413 --------------
1414
1415 - Refactored minimize_corpus.sh to make it a bit more user-friendly and to
1416 select for smallest files, not largest bitmaps. Offers a modest corpus
1417 size improvement in most cases.
1418
1419 - Slightly improved the performance of splicing code.
1420
1421 --------------
1422 Version 0.90b:
1423 --------------
1424
1425 - Moved to an algorithm where paths are marked as preferred primarily based
1426 on size and speed, rather than bitmap coverage. This should offer
1427 noticeable performance gains in many use cases.
1428
1429 - Refactored path calibration code; calibration now takes place as soon as a
1430 test case is discovered, to facilitate better prioritization decisions later
1431 on.
1432
1433 - Changed the way of marking variable paths to avoid .state metadata
1434 inconsistencies.
1435
1436 - Made sure that calibration routines always create a new test case to avoid
1437 hypothetical problems with utilities that modify the input file.
1438
1439 - Added bitmap saturation to fuzzer stats and plot data.
1440
1441 - Added a testcase for JPEG XR.
1442
1443 - Added a tty check for the colors warning in Makefile, to keep distro build
1444 logs tidy. Suggested by Jakub Wilk.
1445
1446 --------------
1447 Version 0.89b:
1448 --------------
1449
1450 - Renamed afl-plot.sh to afl-plot, as requested by Padraig Brady.
1451
1452 - Improved the compatibility of afl-plot with older versions of gnuplot.
1453
1454 - Added banner information to fuzzer_stats, populated it to afl-plot.
1455
1456 --------------
1457 Version 0.88b:
1458 --------------
1459
1460 - Added support for plotting, with design and implementation based on a
1461 prototype design proposed by Michael Rash. Huge thanks!
1462
1463 - Added afl-plot.sh, which allows you to, well, generate a nice plot using
1464 this data.
1465
1466 - Refactored the code slightly to make more frequent updates to fuzzer_stats
1467 and to provide more detail about synchronization.
1468
1469 - Added a fflush(stdout) call for non-tty operation, as requested by
1470 Joonas Kuorilehto.
1471
1472 - Added some detail to fuzzer_stats for parity with plot_file.
1473
1474 --------------
1475 Version 0.87b:
1476 --------------
1477
1478 - Added support for MSAN, via AFL_USE_MSAN, same gotchas as for ASAN.
1479
1480 --------------
1481 Version 0.86b:
1482 --------------
1483
1484 - Added AFL_NO_FORKSRV, allowing the forkserver to be bypassed. Suggested
1485 by Ryan Govostes.
1486
1487 - Simplified afl-showmap.c to make use of the no-forkserver mode.
1488
1489 - Made minor improvements to crash_triage.sh, as suggested by Jakub Wilk.
1490
1491 --------------
1492 Version 0.85b:
1493 --------------
1494
1495 - Fixed the CPU counting code - no sysctlbyname() on OpenBSD, d'oh. Bug
1496 reported by Daniel Dickman.
1497
1498 - Made a slight correction to error messages - the advice on testing
1499 with ulimit was a tiny bit off by a factor of 1024.
1500
1501 --------------
1502 Version 0.84b:
1503 --------------
1504
1505 - Added support for the CPU widget on some non-Linux platforms (I hope).
1506 Based on feedback from Ryan Govostes.
1507
1508 - Cleaned up the changelog (very meta).
1509
1510 --------------
1511 Version 0.83b:
1512 --------------
1513
1514 - Added experimental/clang_asm_normalize/ and related notes in
1515 env_variables.txt and afl-as.c. Thanks to Ryan Govostes for the idea.
1516
1517 - Added advice on hardware utilization in README.
1518
1519 --------------
1520 Version 0.82b:
1521 --------------
1522
1523 - Made additional fixes for Xcode support, juggling -Q and -q flags. Thanks to
1524 Ryan Govostes.
1525
1526 - Added a check for __asm__ blocks and switches to .intel_syntax in assembly.
1527 Based on feedback from Ryan Govostes.
1528
1529 --------------
1530 Version 0.81b:
1531 --------------
1532
1533 - A workaround for Xcode 6 as -Q flag glitch. Spotted by Ryan Govostes.
1534
1535 - Improved Solaris build instructions, as suggested by Martin Carpenter.
1536
1537 - Fix for a slightly busted path scoring conditional. Minor practical impact.
1538
1539 --------------
1540 Version 0.80b:
1541 --------------
1542
1543 - Added a check for $PATH-induced loops. Problem noticed by Kartik Agaram.
1544
1545 - Added AFL_KEEP_ASSEMBLY for easier troubleshooting.
1546
1547 - Added an override for AFL_USE_ASAN if set at afl compile time. Requested by
1548 Hanno Boeck.
1549
1550 --------------
1551 Version 0.79b:
1552 --------------
1553
1554 - Made minor adjustments to path skipping logic.
1555
1556 - Made several documentation updates to reflect the path selection changes
1557 made in 0.78b.
1558
1559 --------------
1560 Version 0.78b:
1561 --------------
1562
1563 - Added a CPU governor check. Bug report from Joe Zbiciak.
1564
1565 - Favored paths are now selected strictly based on new edges, not hit
1566 counts. This speeds up the first pass by a factor of 3-6x without
1567 significantly impacting ultimate coverage (tested with libgif, libpng,
1568 libjpeg).
1569
1570 It also allows some performance & memory usage improvements by making
1571 some of the in-memory bitmaps much smaller.
1572
1573 - Made multiple significant performance improvements to bitmap checking
1574 functions, plus switched to a faster hash.
1575
1576 - Owing largely to these optimizations, bumped the size of the bitmap to
1577 64k and added a warning to detect older binaries that rely on smaller
1578 bitmaps.
1579
1580 --------------
1581 Version 0.77b:
1582 --------------
1583
1584 - Added AFL_SKIP_CHECKS to bypass binary checks when really warranted.
1585 Feature requested by Jakub Wilk.
1586
1587 - Fixed a couple of typos.
1588
1589 - Added a warning for runs that are aborted early on.
1590
1591 --------------
1592 Version 0.76b:
1593 --------------
1594
1595 - Incorporated another signal handling fix for Solaris. Suggestion
1596 submitted by Martin Carpenter.
1597
1598 --------------
1599 Version 0.75b:
1600 --------------
1601
1602 - Implemented a slightly more "elegant" kludge for the %llu glitch (see
1603 types.h).
1604
1605 - Relaxed CPU load warnings to stay in sync with reality.
1606
1607 --------------
1608 Version 0.74b:
1609 --------------
1610
1611 - Switched to more responsive exec speed averages and better UI speed
1612 scaling.
1613
1614 - Fixed a bug with interrupted reads on Solaris. Issue spotted by Martin
1615 Carpenter.
1616
1617 --------------
1618 Version 0.73b:
1619 --------------
1620
1621 - Fixed a stray memcpy() instead of memmove() on overlapping buffers.
1622 Mostly harmless but still dumb. Mistake spotted thanks to David Higgs.
1623
1624 --------------
1625 Version 0.72b:
1626 --------------
1627
1628 - Bumped map size up to 32k. You may want to recompile instrumented
1629 binaries (but nothing horrible will happen if you don't).
1630
1631 - Made huge performance improvements for bit-counting functions.
1632
1633 - Default optimizations now include -funroll-loops. This should have
1634 interesting effects on the instrumentation. Frankly, I'm just going to
1635 ship it and see what happens next. I have a good feeling about this.
1636
1637 - Made a fix for stack alignment crash on MacOS X 10.10; looks like the
1638 rhetorical question in the comments in afl-as.h has been answered.
1639 Tracked down by Mudge Zatko.
1640
1641 --------------
1642 Version 0.71b:
1643 --------------
1644
1645 - Added a fix for the nonsensical MacOS ELF check. Spotted by Mudge Zatko.
1646
1647 - Made some improvements to ASAN checks.
1648
1649 --------------
1650 Version 0.70b:
1651 --------------
1652
1653 - Added explicit detection of ASANified binaries.
1654
1655 - Fixed compilation issues on Solaris. Reported by Martin Carpenter.
1656
1657 --------------
1658 Version 0.69b:
1659 --------------
1660
1661 - Improved the detection of non-instrumented binaries.
1662
1663 - Made the crash counter in -C mode accurate.
1664
1665 - Fixed an obscure install bug that made afl-as non-functional with the tool
1666 installed to /usr/bin instead of /usr/local/bin. Found by Florian Kiersch.
1667
1668 - Fixed for a cosmetic SIGFPE when Ctrl-C is pressed while the fork server
1669 is spinning up.
1670
1671 --------------
1672 Version 0.68b:
1673 --------------
1674
1675 - Added crash exploration mode! Woot!
1676
1677 --------------
1678 Version 0.67b:
1679 --------------
1680
1681 - Fixed several more typos, the project is now cartified 100% typo-free.
1682 Thanks to Thomas Jarosch and Jakub Wilk.
1683
1684 - Made a change to write fuzzer_stats early on.
1685
1686 - Fixed a glitch when (not!) running on MacOS X as root. Spotted by Tobias
1687 Ospelt.
1688
1689 - Made it possible to override -O3 in Makefile. Suggested by Jakub Wilk.
1690
1691 --------------
1692 Version 0.66b:
1693 --------------
1694
1695 - Fixed a very obscure issue with build systems that use gcc as an assembler
1696 for hand-written .s files; this would confuse afl-as. Affected nss, reported
1697 by Hanno Boeck.
1698
1699 - Fixed a bug when cleaning up synchronized fuzzer output dirs. Issue reported
1700 by Thomas Jarosch.
1701
1702 --------------
1703 Version 0.65b:
1704 --------------
1705
1706 - Cleaned up shell printf escape codes in Makefile. Reported by Jakub Wilk.
1707
1708 - Added more color to fuzzer_stats, provided short documentation of the file
1709 format, and made several other stats-related improvements.
1710
1711 --------------
1712 Version 0.64b:
1713 --------------
1714
1715 - Enabled GCC support on MacOS X.
1716
1717 --------------
1718 Version 0.63b:
1719 --------------
1720
1721 - Provided a new, simplified way to pass data in files (@@). See README.
1722
1723 - Made additional fixes for 64-bit MacOS X, working around a crashing bug in
1724 their linker (umpf) and several other things. It's alive!
1725
1726 - Added a minor workaround for a bug in 64-bit FreeBSD (clang -m32 -g doesn't
1727 work on that platform, but clang -m32 does, so we no longer insert -g).
1728
1729 - Added a build-time warning for inverse video terminals and better
1730 instructions in status_screen.txt.
1731
1732 --------------
1733 Version 0.62b:
1734 --------------
1735
1736 - Made minor improvements to the allocator, as suggested by Tobias Ospelt.
1737
1738 - Added example instrumented memcmp() in experimental/instrumented_cmp.
1739
1740 - Added a speculative fix for MacOS X (clang detection, again).
1741
1742 - Fixed typos in parallel_fuzzing.txt. Problems spotted by Thomas Jarosch.
1743
1744 --------------
1745 Version 0.61b:
1746 --------------
1747
1748 - Fixed a minor issue with clang detection on systems with a clang cc
1749 wrapper, so that afl-gcc doesn't confuse it with GCC.
1750
1751 - Made cosmetic improvements to docs and to the CPU load indicator.
1752
1753 - Fixed a glitch with crash removal (README.txt left behind, d'oh).
1754
1755 --------------
1756 Version 0.60b:
1757 --------------
1758
1759 - Fixed problems with jump tables generated by exotic versions of GCC. This
1760 solves an outstanding problem on OpenBSD when using afl-gcc + PIE (not
1761 present with afl-clang).
1762
1763 - Fixed permissions on one of the sample archives.
1764
1765 - Added a lahf / sahf workaround for OpenBSD (their assembler doesn't know
1766 about these opcodes).
1767
1768 - Added docs/INSTALL.
1769
1770 --------------
1771 Version 0.59b:
1772 --------------
1773
1774 - Modified 'make install' to also install test cases.
1775
1776 - Provided better pointers to installed README in afl-fuzz.
1777
1778 - More work on RLIMIT_AS for OpenBSD.
1779
1780 --------------
1781 Version 0.58b:
1782 --------------
1783
1784 - Added a core count check on Linux.
1785
1786 - Refined the code for the lack-of-RLIMIT_AS case on OpenBSD.
1787
1788 - Added a rudimentary CPU utilization meter to help with optimal loading.
1789
1790 --------------
1791 Version 0.57b:
1792 --------------
1793
1794 - Made fixes to support FreeBSD and OpenBSD: use_64bit is now inferred if not
1795 explicitly specified when calling afl-as, and RLIMIT_AS is behind an #ifdef.
1796 Thanks to Fabian Keil and Jonathan Gray for helping troubleshoot this.
1797
1798 - Modified 'make install' to also install docs (in /usr/local/share/doc/afl).
1799
1800 - Fixed a typo in status_screen.txt.
1801
1802 - Made a couple of Makefile improvements as proposed by Jakub Wilk.
1803
1804 --------------
1805 Version 0.56b:
1806 --------------
1807
1808 - Added probabilistic instrumentation density reduction in ASAN mode. This
1809 compensates for ASAN-specific branches in a crude but workable way.
1810
1811 - Updated notes_for_asan.txt.
1812
1813 --------------
1814 Version 0.55b:
1815 --------------
1816
1817 - Implemented smarter out_dir behavior, automatically deleting directories
1818 that don't contain anything of special value. Requested by several folks,
1819 including Hanno Boeck.
1820
1821 - Added more detail in fuzzer_stats (start time, run time, fuzzer PID).
1822
1823 - Implemented support for configurable install prefixes in Makefile
1824 ($PREFIX), as requested by Luca Barbato.
1825
1826 - Made it possible to resume by doing -i <out_dir>, without having to specify
1827 -i <out_dir>/queue/.
1828
1829 --------------
1830 Version 0.54b:
1831 --------------
1832
1833 - Added a fix for -Wformat warning messages (oops, I thought this had been in
1834 place for a while).
1835
1836 --------------
1837 Version 0.53b:
1838 --------------
1839
1840 - Redesigned the crash & hang duplicate detection code to better deal with
1841 fault conditions that can be reached in a multitude of ways.
1842
1843 The old approach could be compared to hashing stack traces to de-dupe
1844 crashes, a method prone to crash count inflation. The alternative I
1845 wanted to avoid would be equivalent to just looking at crash %eip,
1846 which can have false negatives in common functions such as memcpy().
1847
1848 The middle ground currently used in afl-fuzz can be compared to looking
1849 at every line item in the stack trace and tagging crashes as unique if
1850 we see any function name that we haven't seen before (or if something that
1851 we have *always* seen there suddenly disappears). We do the comparison
1852 without paying any attention to ordering or hit counts. This can still
1853 cause some crash inflation early on, but the problem will quickly taper
1854 off. So, you may get 20 dupes instead of 5,000.
1855
1856 - Added a fix for harmless but absurd trim ratios shown if the first exec in
1857 the trimmer timed out. Spotted by @EspenGx.
1858
1859 --------------
1860 Version 0.52b:
1861 --------------
1862
1863 - Added a quick summary of the contents in experimental/.
1864
1865 - Made a fix to the process of writing fuzzer_stats.
1866
1867 - Slightly reorganized the .state/ directory, now recording redundant paths,
1868 too. Note that this breaks the ability to properly resume older sessions
1869 - sorry about that.
1870
1871 (To fix this, simply move <out_dir>/.state/* from an older run
1872 to <out_dir>/.state/deterministic_done/*.)
1873
1874 --------------
1875 Version 0.51b:
1876 --------------
1877
1878 - Changed the search order for afl-as to avoid the problem with older copies
1879 installed system-wide; this also means that I can remove the Makefile check
1880 for that.
1881
1882 - Made it possible to set instrumentation ratio of 0%.
1883
1884 - Introduced some typos, fixed others.
1885
1886 - Fixed the test_prev target in Makefile, as reported by Ozzy Johnson.
1887
1888 --------------
1889 Version 0.50b:
1890 --------------
1891
1892 - Improved the 'make install' logic, as suggested by Padraig Brady.
1893
1894 - Revamped various bits of the documentation, especially around perf_tips.txt;
1895 based on the feedback from Alexander Cherepanov.
1896
1897 - Added AFL_INST_RATIO to afl-as. The only case where this comes handy is
1898 ffmpeg, at least as far as I can tell. (Trivia: the current version of
1899 ffmpeg ./configure also ignores CC and --cc, probably unintentionally).
1900
1901 - Added documentation for all environmental variables (env_variables.txt).
1902
1903 - Implemented a visual warning for excessive or insufficient bitmap density.
1904
1905 - Changed afl-gcc to add -O3 by default; use AFL_DONT_OPTIMIZE if you don't
1906 like that. Big speed gain for ffmpeg, so seems like a good idea.
1907
1908 - Made a regression fix to afl-as to ignore .LBB labels in gcc mode.
1909
1910 --------------
1911 Version 0.49b:
1912 --------------
1913
1914 - Fixed more typos, as found by Jakub Wilk.
1915
1916 - Added support for clang!
1917
1918 - Changed AFL_HARDEN to *not* include ASAN by default. Use AFL_USE_ASAN if
1919 needed. The reasons for this are in notes_for_asan.txt.
1920
1921 - Switched from configure auto-detection to isatty() to keep afl-as and
1922 afl-gcc quiet.
1923
1924 - Improved installation process to properly create symlinks, rather than
1925 copies of binaries.
1926
1927 --------------
1928 Version 0.48b:
1929 --------------
1930
1931 - Improved afl-fuzz to force-set ASAN_OPTIONS=abort_on_error=1. Otherwise,
1932 ASAN crashes wouldn't be caught at all. Reported by Hanno Boeck.
1933
1934 - Improved Makefile mkdir logic, as suggested by Hanno Boeck.
1935
1936 - Improved the 64-bit instrumentation to properly save r8-r11 registers in
1937 the x86 setup code. The old behavior could cause rare problems running
1938 *without* instrumentation when the first function called in a particular
1939 .o file has 5+ parameters. No impact on code running under afl-fuzz or
1940 afl-showmap. Issue spotted by Padraig Brady.
1941
1942 --------------
1943 Version 0.47b:
1944 --------------
1945
1946 - Fixed another Makefile bug for parallel builds of afl. Problem identified
1947 by Richard W. M. Jones.
1948
1949 - Added support for suffixes for -m.
1950
1951 - Updated the documentation and added notes_for_asan.txt. Based on feedback
1952 from Hanno Boeck, Ben Laurie, and others.
1953
1954 - Moved the project to http://lcamtuf.coredump.cx/afl/.
1955
1956 --------------
1957 Version 0.46b:
1958 --------------
1959
1960 - Cleaned up Makefile dependencies for parallel builds. Requested by
1961 Richard W. M. Jones.
1962
1963 - Added support for DESTDIR in Makefile. Once again suggested by
1964 Richard W. M. Jones :-)
1965
1966 - Removed all the USE_64BIT stuff; we now just auto-detect compilation mode.
1967 As requested by many callers to the show.
1968
1969 - Fixed rare problems with programs that use snippets of assembly and
1970 switch between .code32 and .code64. Addresses a glitch spotted by
1971 Hanno Boeck with compiling ToT gdb.
1972
1973 --------------
1974 Version 0.45b:
1975 --------------
1976
1977 - Implemented a test case trimmer. Results in 20-30% size reduction for many
1978 types of work loads, with very pronounced improvements in path discovery
1979 speeds.
1980
1981 - Added better warnings for various problems with input directories.
1982
1983 - Added a Makefile warning for older copies, based on counterintuitive
1984 behavior observed by Hovik Manucharyan.
1985
1986 - Added fuzzer_stats file for status monitoring. Suggested by @dronesec.
1987
1988 - Fixed moar typos, thanks to Alexander Cherepanov.
1989
1990 - Implemented better warnings for ASAN memory requirements, based on calls
1991 from several angry listeners.
1992
1993 - Switched to saner behavior with non-tty stdout (less output generated,
1994 no ANSI art).
1995
1996 --------------
1997 Version 0.44b:
1998 --------------
1999
2000 - Added support for AFL_CC and AFL_CXX, based on a patch from Ben Laurie.
2001
2002 - Replaced afl-fuzz -S -D with -M for simplicity.
2003
2004 - Added a check for .section .text; lack of this prevented main() from
2005 getting instrumented for some users. Reported by Tom Ritter.
2006
2007 - Reorganized the testcases/ directory.
2008
2009 - Added an extra check to confirm that the build is operational.
2010
2011 - Made more consistent use of color reset codes, as suggested by Oliver
2012 Kunz.
2013
2014 --------------
2015 Version 0.43b:
2016 --------------
2017
2018 - Fixed a bug with 64-bit gcc -shared relocs.
2019
2020 - Removed echo -e from Makefile for compatibility with dash. Suggested
2021 by Jakub Wilk.
2022
2023 - Added status_screen.txt.
2024
2025 - Added experimental/canvas_harness.
2026
2027 - Made a minor change to the Makefile GCC check. Suggested by Hanno Boeck.
2028
2029 --------------
2030 Version 0.42b:
2031 --------------
2032
2033 - Fixed a bug with red zone handling for 64-bit (oops!). Problem reported by
2034 Felix Groebert.
2035
2036 - Implemented horribly experimental ARM support in experimental/arm_support.
2037
2038 - Made several improvements to error messages.
2039
2040 - Added AFL_QUIET to silence afl-gcc and afl-as when using wonky build
2041 systems. Reported by Hanno Boeck.
2042
2043 - Improved check for 64-bit compilation, plus several sanity checks
2044 in Makefile.
2045
2046 --------------
2047 Version 0.41b:
2048 --------------
2049
2050 - Fixed a fork served bug for processes that call execve().
2051
2052 - Made minor compatibility fixes to Makefile, afl-gcc; suggested by Jakub
2053 Wilk.
2054
2055 - Fixed triage_crashes.sh to work with the new layout of output directories.
2056 Suggested by Jakub Wilk.
2057
2058 - Made multiple performance-related improvements to the injected
2059 instrumentation.
2060
2061 - Added visual indication of the number of imported paths.
2062
2063 - Fixed afl-showmap to make it work well with new instrumentation.
2064
2065 - Added much better error messages for crashes when importing test cases
2066 or otherwise calibrating the binary.
2067
2068 --------------
2069 Version 0.40b:
2070 --------------
2071
2072 - Added support for parallelized fuzzing. Inspired by earlier patch
2073 from Sebastian Roschke.
2074
2075 - Added an example in experimental/distributed_fuzzing/.
2076
2077 --------------
2078 Version 0.39b:
2079 --------------
2080
2081 - Redesigned status screen, now 90% more spiffy.
2082
2083 - Added more verbose and user-friendly messages for some common problems.
2084
2085 - Modified the resumption code to reconstruct path depth.
2086
2087 - Changed the code to inhibit core dumps and improve the ability to detect
2088 SEGVs.
2089
2090 - Added a check for redirection of core dumps to programs.
2091
2092 - Made a minor improvement to the handling of variable paths.
2093
2094 - Made additional performance tweaks to afl-fuzz, chiefly around mem limits.
2095
2096 - Added performance_tips.txt.
2097
2098 --------------
2099 Version 0.38b:
2100 --------------
2101
2102 - Fixed an fd leak and +cov tracking bug resulting from changes in 0.37b.
2103
2104 - Implemented auto-scaling for screen update speed.
2105
2106 - Added a visual indication when running in non-instrumented mode.
2107
2108 --------------
2109 Version 0.37b:
2110 --------------
2111
2112 - Added fuzz state tracking for more seamless resumption of aborted
2113 fuzzing sessions.
2114
2115 - Removed the -D option, as it's no longer necessary.
2116
2117 - Refactored calibration code and improved startup reporting.
2118
2119 - Implemented dynamically scaled timeouts, so that you don't need to
2120 play with -t except in some very rare cases.
2121
2122 - Added visual notification for slow binaries.
2123
2124 - Improved instrumentation to explicitly cover the other leg of every
2125 branch.
2126
2127 --------------
2128 Version 0.36b:
2129 --------------
2130
2131 - Implemented fork server support to avoid the overhead of execve(). A
2132 nearly-verbatim design from Jann Horn; still pending part 2 that would
2133 also skip initial setup steps (thinking about reliable heuristics now).
2134
2135 - Added a check for shell scripts used as fuzz targets.
2136
2137 - Added a check for fuzz jobs that don't seem to be finding anything.
2138
2139 - Fixed the way IGNORE_FINDS works (was a bit broken after adding splicing
2140 and path skip heuristics).
2141
2142 --------------
2143 Version 0.35b:
2144 --------------
2145
2146 - Properly integrated 64-bit instrumentation into afl-as.
2147
2148 --------------
2149 Version 0.34b:
2150 --------------
2151
2152 - Added a new exec count classifier (the working theory is that it gets
2153 meaningful coverage with fewer test cases spewed out).
2154
2155 --------------
2156 Version 0.33b:
2157 --------------
2158
2159 - Switched to new, somewhat experimental instrumentation that tries to
2160 target only arcs, rather than every line. May be fragile, but is a lot
2161 faster (2x+).
2162
2163 - Made several other cosmetic fixes and typo corrections, thanks to
2164 Jakub Wilk.
2165
2166 --------------
2167 Version 0.32b:
2168 --------------
2169
2170 - Another take at fixing the C++ exception thing. Reported by Jakub Wilk.
2171
2172 --------------
2173 Version 0.31b:
2174 --------------
2175
2176 - Made another fix to afl-as to address a potential problem with newer
2177 versions of GCC (introduced in 0.28b). Thanks to Jann Horn.
2178
2179 --------------
2180 Version 0.30b:
2181 --------------
2182
2183 - Added more detail about the underlying operations in file names.
2184
2185 --------------
2186 Version 0.29b:
2187 --------------
2188
2189 - Made some general improvements to chunk operations.
2190
2191 --------------
2192 Version 0.28b:
2193 --------------
2194
2195 - Fixed C++ exception handling in newer versions of GCC. Problem diagnosed
2196 by Eberhard Mattes.
2197
2198 - Fixed the handling of the overflow flag. Once again, thanks to
2199 Eberhard Mattes.
2200
2201 --------------
2202 Version 0.27b:
2203 --------------
2204
2205 - Added prioritization of new paths over the already-fuzzed ones.
2206
2207 - Included spliced test case ID in the output file name.
2208
2209 - Fixed a rare, cosmetic null ptr deref after Ctrl-C.
2210
2211 - Refactored the code to make copies of test cases in the output directory.
2212
2213 - Switched to better output file names, keeping track of stage and splicing
2214 sources.
2215
2216 --------------
2217 Version 0.26b:
2218 --------------
2219
2220 - Revamped storage of testcases, -u option removed,
2221
2222 - Added a built-in effort minimizer to get rid of potentially redundant
2223 inputs,
2224
2225 - Provided a testcase count minimization script in experimental/,
2226
2227 - Made miscellaneous improvements to directory and file handling.
2228
2229 - Fixed a bug in timeout detection.
2230
2231 --------------
2232 Version 0.25b:
2233 --------------
2234
2235 - Improved count-based instrumentation.
2236
2237 - Improved the hang deduplication logic.
2238
2239 - Added -cov prefixes for test cases.
2240
2241 - Switched from readdir() to scandir() + alphasort() to preserve ordering of
2242 test cases.
2243
2244 - Added a splicing strategy.
2245
2246 - Made various minor UI improvements and several other bugfixes.
2247
2248 --------------
2249 Version 0.24b:
2250 --------------
2251
2252 - Added program name to the status screen, plus the -T parameter to go with
2253 it.
2254
2255 --------------
2256 Version 0.23b:
2257 --------------
2258
2259 - Improved the detection of variable behaviors.
2260
2261 - Added path depth tracking,
2262
2263 - Improved the UI a bit,
2264
2265 - Switched to simplified (XOR-based) tuple instrumentation.
2266
2267 --------------
2268 Version 0.22b:
2269 --------------
2270
2271 - Refactored the handling of long bitflips and some swaps.
2272
2273 - Fixed the handling of gcc -pipe, thanks to anonymous reporter.
2274
2275 --------------
2276 Version 0.21b:
2277 --------------
2278
2279 - Initial public release.
OLDNEW
« no previous file with comments | « third_party/afl/src/docs/COPYING ('k') | third_party/afl/src/docs/INSTALL » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698