OLD | NEW |
(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. |
OLD | NEW |