402 Commits

Author SHA1 Message Date
Kuang-che Wu
2e7f191f3b extract function to resize map buffers 2025-05-25 09:33:34 +08:00
Kuang-che Wu
cee764689c fix save_if_interesting
The value of `classified`, `bits_new`, and `cksum`, were not always
correctly maintained.
 1. In the past, `afl->queue_top->exec_cksum` was always assigned when
    `add_to_queue`, however it became conditional since cd5764170595.
    This doesn't change correctness because calibrate_case() will
    calculate the checksum. However, this mean one calibration run is
    wasted.

 2. Sometimes `classified` is set incorrectly.
    For example, this code snippet
    ```
    new_bits = has_new_bits_unclassified(afl, afl->virgin_bits);
    classified = 1;
    ```
    should be changed to
    ```
    new_bits = has_new_bits_unclassified(afl, afl->virgin_bits);
    if (new_bits) classified = 1;
    ```

This commit fixed above issues and use macros to make the code easier to
understand. This should prevent to forget to set classified in the
future (like the bug fixed by 30c93d132166).

The macros also defers the calculations to where the values are really
needed. This could save cpu if the code returns earlier. For example,
if a case is timeout first and not timeout the second time, the current
code does classify_counts, which is not always needed.
2025-05-22 23:14:40 +08:00
vanhauser-thc
c3d5f3f471 skip entried synced from us if we have not restarted 2025-05-20 17:07:30 +02:00
vanhauser-thc
221439fc7a fix foreign sync naming 2025-05-13 10:42:26 +02:00
Kuang-che Wu
062f883160 add splice_optout_py prototype 2025-05-05 16:16:42 +08:00
Kuang-che Wu
6876ab7901 remove dead prototype 2025-05-05 08:46:49 +08:00
Kuang-che Wu
1d2de1cb6d remove dead code in comment 2025-04-12 11:15:25 +00:00
vanhauser-thc
8461f860eb code format 2025-04-10 16:28:03 +02:00
5angjun
161905c2fc fix: correct rescoring logic with minimal executions
Previous scoring logic did not correctly rescore all queue entries.

This patch ensures rescoring works under the updated scheduling logic,
while minimizing executions per feedback from PR #2363.

Based on feedback from: https://github.com/AFLplusplus/AFLplusplus/pull/2363
2025-04-09 23:37:16 +09:00
vanhauser-thc
4ff2673895 fix update_bitmap_score when no current trace is present 2025-04-09 14:21:42 +02:00
vanhauser-thc
55c9c4ff19 deprecate some queue/.state files 2025-04-08 11:32:08 +02:00
vanhauser-thc
7c349b6cde increase fast resume version 2025-04-07 10:13:13 +02:00
Kuang-che Wu
ec07f531f8 reduce skipdet_e memory usage
By using bitmaps, the memory requirement for
`q->skipdet_e->skip_eff_map` and `done_inf_map`, which previously scaled
with the corpus size, is reduced to one-eighth of its original size.
2025-04-05 01:49:27 +00:00
David Robillard
7765d4ac33
Fix various spelling errors (#2293)
* Fix spelling errors in log messages

* Fix doc comment syntax

* Fix spelling errors in Markdown documentation

* Fix spelling errors in comments
2025-02-10 00:32:42 +01:00
mio
80e1a95378
Remove the unused field 2025-01-27 19:24:46 +08:00
mio
5c239d9207
nit with code formatt-ed 2025-01-23 19:11:45 +08:00
mio
1c9925c7d7
Initial integration 2025-01-19 23:49:52 +08:00
Martin Leitner-Ankerl
9afba51ec1 renamed last_avg_execs -> last_avg_total_execs
This should make it a bit more clear that it stores the total number of executions from the previous update
2024-12-19 07:59:45 +01:00
Martin Leitner-Ankerl
99402aa31c Fix overflow in execs_ps_last_min calculation
last_avg_execs should be 64bit, same as total_execs, otherwise there is an overflow once total_execs reaches 2^32. Which can happen in practice for long-running fuzzing campaigns.
2024-12-19 07:56:15 +01:00
vanhauser-thc
ccb952dde8 Revert "Replace gettimeofday with clock_gettime (#2159)"
This reverts commit 7c380a6612f00e4a7ed02364dc2b3769e8edc8f8.
2024-07-14 10:18:23 +02:00
carpintero-de-c
7c380a6612
Replace gettimeofday with clock_gettime (#2159) 2024-07-14 00:25:58 +02:00
vanhauser-thc
ba7313b521 AFL_CUSTOM_MUTATOR_LATE_SEND added 2024-06-27 18:51:58 +02:00
Kuan-Wei Chiu
ac5815d994 Optimize bit counting using __builtin_popcount
Use the __builtin_popcount intrinsic to optimize the bit counting
function if the compiler supports it. This change replaces the manual
bit counting algorithm with the more efficient built-in function, which
leverages hardware support on compatible processors.

This modification ensures that the code remains backward-compatible by
falling back to the original implementation when __builtin_popcount is
not available.
2024-06-24 06:52:07 +08:00
vanhauser-thc
304e84502d fast resume option 2024-06-18 15:24:38 +02:00
vanhauser-thc
dd762726dc fastresume implementation 2024-06-12 09:10:35 +02:00
vanhauser-thc
f0937f96d4 target hash 2024-06-07 11:48:58 +02:00
vanhauser-thc
0618bfd4ae fix 2024-06-07 09:58:27 +02:00
vanhauser-thc
bdfd38771a add cmplog_time measurement 2024-06-07 09:47:29 +02:00
vanhauser-thc
2d9b793dbb AFL_NO_SYNC 2024-06-04 14:48:02 +02:00
vanhauser-thc
9419e39fdf nits 2024-05-31 18:32:31 +02:00
Samuel Moelius
c03f2897d0 Add AFL_SHA1_FILENAMES option 2024-05-12 05:44:14 -04:00
vanhauser-thc
26eaf53a83 AFL_DISABLE_REDUNDANT 2024-05-02 08:35:24 +02:00
vanhauser-thc
40adc34413 fix -V, code format 2024-04-09 09:24:19 +02:00
Cornelius Aschermann
48a862c503 :Adds stats tracking time spend in calibration/trim/sync
This currently does not affect statsd nor the UI. Only the fuzzer_stats file is updated
2024-04-08 11:54:19 -07:00
van Hauser
42c663e7c7
Merge pull request #1965 from CodeLinaro/stateful
replay mode support
2024-02-08 10:29:33 +01:00
Davide Quarta
023fc19ce0 better replay mode error handling, added replay mode documentation, code formatting 2024-02-05 18:26:46 +01:00
vanhauser-thc
ed1a6f8a57 2024 v4.10c release 2024-02-03 11:01:31 +01:00
Han Zheng
06f0982f0f
Enhancement on Deterministic stage (#1972)
* fuzzer: init commit based on aflpp 60dc37a8cf09f8e9048e4b6a2204d6c90b27655a

* fuzzers: adding the skip variables and initialize

* log: profile the det/havoc finding

* log: add profile log output

* fuzzers: sperate log/skipdet module

* fuzzers: add quick eff_map calc

* fuzzers: add skip_eff_map in fuzz_one

* fuzzers: mark whole input space in eff_map

* fuzzers: add undet bit threshold to skip some seeds

* fuzzers: fix one byte overflow

* fuzzers: fix overflow

* fix code format

* add havoc only again

* code format

* remove log to INTROSPECTION, rename skipdet module

* rename skipdet module

* remove log to stats

* clean redundant code

* code format

* remove redundant code format check

* remove redundant doc

* remove redundant objects

* clean files

* change -d to default skipdet

* disable deterministic when using CUSTOM_MUTATOR

* revert fix
2024-02-01 14:13:21 +00:00
Davide Quarta
8fedf49984 replay mode support 2024-01-23 19:36:49 +01:00
yangzao
faedb3fb29 update python module 2023-11-25 21:18:32 -07:00
yangzao
8af74bcaee update afl-fuzz-run 2023-11-24 22:47:50 -07:00
yangzao
770e868d04 add custom_post_run.c 2023-11-24 11:06:06 -07:00
vanhauser-thc
4cdf7a1e3e add scale encode mode for cmplog 2023-10-23 18:03:59 +02:00
vanhauser-thc
a809c3c50c less impact 2023-09-03 11:22:54 +02:00
vanhauser-thc
549e5dd926 AFL_IGNORE_SEED_PROBLEMS 2023-08-23 18:02:33 +02:00
vanhauser-thc
4d8d8633ff update faq 2023-08-13 11:44:37 +02:00
marc
8823f22a9c add AFL_FINAL_SYNC 2023-08-11 11:22:18 +02:00
marc
55d696fbae code format 2023-08-09 17:14:13 +02:00
Junwha
fcdfe9e990 Define AFL_CRASHING_SEEDS_AS_NEW_CRASH as env variable
- and fix typo

Signed-off-by: Junwha <qbit@unist.ac.kr>
2023-08-04 18:36:58 +09:00
Junwha
1429c9724e Add option for treating crashing input as new crash
Signed-off-by: Junwha Hong <qbit@unist.ac.kr>
2023-08-02 19:07:38 +09:00