Skip to content

Commit afbcb07

Browse files
Merge pull request AFLplusplus#2679 from AFLplusplus/dev
push to stable
2 parents ada0855 + 59ba767 commit afbcb07

File tree

18 files changed

+287
-182
lines changed

18 files changed

+287
-182
lines changed

.custom-format.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ def check_clang_format_pip_version():
6565
if shutil.which(CLANG_FORMAT_BIN) is None \
6666
and CLANG_FORMAT_PIP is False:
6767
print(f"[!] clang-format-{CURRENT_LLVM} is needed. Aborted.")
68-
print(f"Run `pip3 install \"clang-format=={CURRENT_LLVM}.*\"` \
68+
print(f"Run `pip3 install --break-system-packages \"clang-format=={CURRENT_LLVM}.*\"` \
6969
to install via pip.")
7070
exit(1)
7171

TODO.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
## Must
44

55
- afl_fsrv_deinit cmplog
6-
- check for null ptr for xml/curl/g_ string transform functions
6+
- ijon support?
77
- hardened_usercopy=0 page_alloc.shuffle=0
88
- add value_profile but only enable after 15 minutes without finds
99
- cmplog max items env?

afl-cmin.bash

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -191,14 +191,15 @@ if [ "$AFL_ALLOW_TMP" = "" ]; then
191191

192192
fi
193193

194-
# If @@ is specified, but there's no -f, let's come up with a temporary input
194+
# If placeholder is specified, but there's no -f, let's come up with a temporary input
195195
# file name.
196+
PLACEHOLDER="${AFL_INPUT_PLACEHOLDER:-@@}"
196197

197198
TRACE_DIR="$OUT_DIR/.traces"
198199

199200
if [ "$STDIN_FILE" = "" ]; then
200201

201-
if echo "$*" | grep -qF '@@'; then
202+
if echo "$*" | grep -qF "$PLACEHOLDER"; then
202203
STDIN_FILE="$TRACE_DIR/.cur_input"
203204
fi
204205

afl-cmin.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -374,9 +374,10 @@ def afl_showmap(
374374
"-Z", # cmin mode
375375
]
376376
# yapf: enable
377+
placeholder = os.environ.get("AFL_INPUT_PLACEHOLDER", "@@")
377378
found_atat = False
378379
for arg in args.args:
379-
if "@@" in arg:
380+
if placeholder in arg:
380381
found_atat = True
381382

382383
if args.stdin_file:

custom_mutators/aflpp_tritondse/aflpp_tritondse.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,9 +139,10 @@ def init(seed):
139139
argv_tmp = [ os.environ['AFL_CUSTOM_INFO_PROGRAM'] ]
140140
argv_tmp += argv_list.split()
141141
argv = []
142-
# now check for @@
142+
placeholder = os.environ.get("AFL_INPUT_PLACEHOLDER", "@@")
143+
# now check for placeholder
143144
for item in argv_tmp:
144-
if "@@" in item:
145+
if placeholder in item:
145146
input_file = out_path + '/../.input'
146147
argv.append(input_file)
147148
else:

custom_mutators/symqemu/symqemu.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,9 @@ my_mutator_t *afl_custom_init(afl_state_t *afl, unsigned int seed) {
105105

106106
u8 *tmp = NULL;
107107
if ((tmp = getenv("AFL_CUSTOM_INFO_PROGRAM_ARGV")) && *tmp) {
108+
char *placeholder = (char *) get_afl_env("AFL_INPUT_PLACEHOLDER");
109+
if (!placeholder || !*placeholder)
110+
placeholder = (char *)"@@";
108111

109112
int argc = 0, index = 2;
110113
for (u32 i = 0; i < strlen(tmp); ++i)
@@ -126,7 +129,7 @@ my_mutator_t *afl_custom_init(afl_state_t *afl, unsigned int seed) {
126129

127130
}
128131

129-
if (strcmp(data->argv[index], "@@") == 0) {
132+
if (strcmp((char *)data->argv[index], placeholder) == 0) {
130133

131134
if (!data->input_file) {
132135

docs/Changelog.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,12 @@
1111
change
1212
- afl-cc:
1313
- LLVM 22 support (they are again switching around include files ...)
14+
- g_/curl_/xml_ string support for COMPCOV, thanks to @Prajwal-kp-18
1415
- afl-cmin:
15-
- new implementation in C by @kcwu - thanks!
16+
- new implementation in C by @kcwu - thanks! (it is the default now)
17+
- afl-cmin.py was changing behaviour to hash the original filenames,
18+
this was reverted.
19+
- afl-cmin and afl-cmin.py honor `AFL_SHA1_FILENAMES` now
1620
- afl-showmap:
1721
- -f support added by Prajwal-kp-18 - thanks!
1822

docs/env_variables.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,12 @@ fairly broad use of environment variables instead:
8585
8686
Note that this is an outdated variable. Only LLVM CLASSIC pass can use this.
8787
88+
- Setting `AFL_INPUT_PLACEHOLDER` to a string allows you to use that string
89+
as a placeholder instead of "@@" in the target command line arguments.
90+
Use this when "@@" conflicts with the parameters of your program.
91+
For eg. `AFL_INPUT_PLACEHOLDER=NEW_PLACEHOLDER afl-fuzz -i in -o out --
92+
./targetProgram NEW_PLACEHOLDER`
93+
8894
- `AFL_NO_BUILTIN` causes the compiler to generate code suitable for use with
8995
libtokencap.so (but perhaps running a bit slower than without the flag).
9096

include/envs.h

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -61,18 +61,19 @@ static char *afl_environment_variables[] = {
6161
"AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES", "AFL_IGNORE_PROBLEMS",
6262
"AFL_IGNORE_PROBLEMS_COVERAGE", "AFL_IGNORE_SEED_PROBLEMS",
6363
"AFL_IGNORE_TIMEOUTS", "AFL_IGNORE_UNKNOWN_ENVS", "AFL_IMPORT_FIRST",
64-
"AFL_IJON_HISTORY_LIMIT", "AFL_INPUT_LEN_MIN", "AFL_INPUT_LEN_MAX",
65-
"AFL_INST_LIBS", "AFL_INST_RATIO", "AFL_KEEP_TIMEOUTS", "AFL_KILL_SIGNAL",
66-
"AFL_FORK_SERVER_KILL_SIGNAL", "AFL_KEEP_TRACES", "AFL_KEEP_ASSEMBLY",
67-
"AFL_LD_HARD_FAIL", "AFL_LD_LIMIT_MB", "AFL_LD_NO_CALLOC_OVER",
68-
"AFL_LD_PASSTHROUGH", "AFL_REAL_LD", "AFL_LD_PRELOAD", "AFL_LD_VERBOSE",
69-
"AFL_LLVM_ALLOWLIST", "AFL_LLVM_DENYLIST", "AFL_LLVM_BLOCKLIST",
70-
"AFL_CMPLOG", "AFL_LLVM_CMPLOG", "AFL_GCC_CMPLOG", "AFL_LLVM_INSTRIM",
71-
"AFL_LLVM_CALLER", "AFL_LLVM_CTX", "AFL_LLVM_NO_ERROR",
72-
"AFL_LLVM_LTO_CALLER", "AFL_LLVM_LTO_CTX", "AFL_LLVM_LTO_CALLER_DEPTH",
73-
"AFL_LLVM_LTO_CTX_DEPTH", "AFL_LLVM_CALLER_DEPTH", "AFL_LLVM_CTX_DEPTH",
74-
"AFL_LLVM_CTX_K", "AFL_LLVM_DICT2FILE", "AFL_LLVM_DICT2FILE_NO_MAIN",
75-
"AFL_LLVM_DOCUMENT_IDS", "AFL_LLVM_INSTRIM_LOOPHEAD", "AFL_LLVM_INSTRUMENT",
64+
"AFL_IJON_HISTORY_LIMIT", "AFL_INPUT_PLACEHOLDER", "AFL_INPUT_LEN_MIN",
65+
"AFL_INPUT_LEN_MAX", "AFL_INST_LIBS", "AFL_INST_RATIO", "AFL_KEEP_TIMEOUTS",
66+
"AFL_KILL_SIGNAL", "AFL_FORK_SERVER_KILL_SIGNAL", "AFL_KEEP_TRACES",
67+
"AFL_KEEP_ASSEMBLY", "AFL_LD_HARD_FAIL", "AFL_LD_LIMIT_MB",
68+
"AFL_LD_NO_CALLOC_OVER", "AFL_LD_PASSTHROUGH", "AFL_REAL_LD",
69+
"AFL_LD_PRELOAD", "AFL_LD_VERBOSE", "AFL_LLVM_ALLOWLIST",
70+
"AFL_LLVM_DENYLIST", "AFL_LLVM_BLOCKLIST", "AFL_CMPLOG", "AFL_LLVM_CMPLOG",
71+
"AFL_GCC_CMPLOG", "AFL_LLVM_INSTRIM", "AFL_LLVM_CALLER", "AFL_LLVM_CTX",
72+
"AFL_LLVM_NO_ERROR", "AFL_LLVM_LTO_CALLER", "AFL_LLVM_LTO_CTX",
73+
"AFL_LLVM_LTO_CALLER_DEPTH", "AFL_LLVM_LTO_CTX_DEPTH",
74+
"AFL_LLVM_CALLER_DEPTH", "AFL_LLVM_CTX_DEPTH", "AFL_LLVM_CTX_K",
75+
"AFL_LLVM_DICT2FILE", "AFL_LLVM_DICT2FILE_NO_MAIN", "AFL_LLVM_DOCUMENT_IDS",
76+
"AFL_LLVM_INSTRIM_LOOPHEAD", "AFL_LLVM_INSTRUMENT",
7677
"AFL_LLVM_LTO_AUTODICTIONARY", "AFL_LLVM_AUTODICTIONARY",
7778
"AFL_LLVM_SKIPSINGLEBLOCK", "AFL_LLVM_IJON",
7879
// Marker: ADD_TO_INJECTIONS

include/forkserver.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,9 @@ fsrv_run_result_t afl_fsrv_run_target(afl_forkserver_t *fsrv, u32 timeout,
275275
void afl_fsrv_killall(void);
276276
void afl_fsrv_deinit(afl_forkserver_t *fsrv);
277277
void afl_fsrv_kill(afl_forkserver_t *fsrv);
278+
void afl_fsrv_resize_mapsize(afl_forkserver_t *fsrv, void *shm_p,
279+
char **use_argv, u32 map_size,
280+
volatile u8 *stop_soon, bool unicorn_mode);
278281

279282
#ifdef __linux__
280283
void nyx_load_target_hash(afl_forkserver_t *fsrv);

0 commit comments

Comments
 (0)