work with spaces in filenames

This commit is contained in:
vanhauser-thc
2024-04-26 16:14:45 +02:00
parent f3b6d64ad3
commit 70c60cfba7
4 changed files with 30 additions and 5 deletions

View File

@ -13,7 +13,7 @@ awk -f - -- ${@+"$@"} <<'EOF'
# awk script to minimize a test corpus of input files # awk script to minimize a test corpus of input files
# #
# based on afl-cmin bash script written by Michal Zalewski # based on afl-cmin bash script written by Michal Zalewski
# rewritten by Heiko Eißfeldt (hexcoder-) # rewritten by Heiko Eissfeldt (hexcoder-)
# tested with: # tested with:
# gnu awk (x86 Linux) # gnu awk (x86 Linux)
# bsd awk (x86 *BSD) # bsd awk (x86 *BSD)
@ -603,8 +603,8 @@ BEGIN {
# create path for the trace file from afl-showmap # create path for the trace file from afl-showmap
tracefile_path = trace_dir"/"fn tracefile_path = trace_dir"/"fn
# ensure the file size is not zero # ensure the file size is not zero
cmd = "du -b "tracefile_path cmd = "du -b \""tracefile_path"\""
"ls -l "tracefile_path # "ls -l \""tracefile_path"\""
cmd | getline output cmd | getline output
close(cmd) close(cmd)
split(output, result, "\t") split(output, result, "\t")

View File

@ -152,6 +152,7 @@ Minimization settings:
-e - solve for edge coverage only, ignore hit counts -e - solve for edge coverage only, ignore hit counts
For additional tips, please consult README.md. For additional tips, please consult README.md.
This script cannot read filenames that end with a space ' '.
Environment variables used: Environment variables used:
AFL_KEEP_TRACES: leave the temporary <out_dir>\.traces directory AFL_KEEP_TRACES: leave the temporary <out_dir>\.traces directory

View File

@ -6,8 +6,11 @@
### Version ++4.21a (dev) ### Version ++4.21a (dev)
* afl-fuzz * afl-fuzz
- fix AFL_PERSISTENT_RECORD - fix AFL_PERSISTENT_RECORD
- prevent filenames in the queue that have spaces
* afl-cc: * afl-cc:
- fixes for LTO and outdated afl-gcc mode - fixes for LTO and outdated afl-gcc mode
* afl-cmin
- work with input files that have a space
### Version ++4.20c (release) ### Version ++4.20c (release)

View File

@ -459,6 +459,24 @@ void bind_to_free_cpu(afl_state_t *afl) {
#endif /* HAVE_AFFINITY */ #endif /* HAVE_AFFINITY */
/* transforms spaces in a string to underscores (inplace) */
static void no_spaces(u8 *string) {
if (string) {
u8 *ptr = string;
while (*ptr != 0) {
if (*ptr == ' ') { *ptr = '_'; }
++ptr;
}
}
}
/* Shuffle an array of pointers. Might be slightly biased. */ /* Shuffle an array of pointers. Might be slightly biased. */
static void shuffle_ptrs(afl_state_t *afl, void **ptrs, u32 cnt) { static void shuffle_ptrs(afl_state_t *afl, void **ptrs, u32 cnt) {
@ -1381,11 +1399,11 @@ void perform_dry_run(afl_state_t *afl) {
static void link_or_copy(u8 *old_path, u8 *new_path) { static void link_or_copy(u8 *old_path, u8 *new_path) {
s32 i = link(old_path, new_path); s32 i = link(old_path, new_path);
if (!i) { return; }
s32 sfd, dfd; s32 sfd, dfd;
u8 *tmp; u8 *tmp;
if (!i) { return; }
sfd = open(old_path, O_RDONLY); sfd = open(old_path, O_RDONLY);
if (sfd < 0) { PFATAL("Unable to open '%s'", old_path); } if (sfd < 0) { PFATAL("Unable to open '%s'", old_path); }
@ -1495,6 +1513,9 @@ void pivot_inputs(afl_state_t *afl) {
afl->fsrv.total_execs, use_name, afl->file_extension ? "." : "", afl->fsrv.total_execs, use_name, afl->file_extension ? "." : "",
afl->file_extension ? (const char *)afl->file_extension : ""); afl->file_extension ? (const char *)afl->file_extension : "");
u8 *pos = strrchr(nfn, '/');
no_spaces(pos + 30);
#else #else
nfn = alloc_printf( nfn = alloc_printf(