diff --git a/include/afl-fuzz.h b/include/afl-fuzz.h index 22f80567..ab93d282 100644 --- a/include/afl-fuzz.h +++ b/include/afl-fuzz.h @@ -770,6 +770,7 @@ typedef struct afl_state { #define FOREIGN_SYNCS_MAX 32U u8 foreign_sync_cnt; struct foreign_sync foreign_syncs[FOREIGN_SYNCS_MAX]; + char *foreign_file; #ifdef _AFL_DOCUMENT_MUTATIONS u8 do_document; diff --git a/src/afl-fuzz-bitmap.c b/src/afl-fuzz-bitmap.c index e7c79c69..5d3cc71a 100644 --- a/src/afl-fuzz-bitmap.c +++ b/src/afl-fuzz-bitmap.c @@ -317,7 +317,15 @@ u8 *describe_op(afl_state_t *afl, u8 new_bits, size_t max_description_len) { if (unlikely(afl->syncing_party)) { - sprintf(ret, "sync:%s,src:%06u", afl->syncing_party, afl->syncing_case); + if (unlikely(afl->foreign_file)) { + + sprintf(ret, "sync:%s,src:%.20s", afl->syncing_party, afl->foreign_file); + + } else { + + sprintf(ret, "sync:%s,src:%06u", afl->syncing_party, afl->syncing_case); + + } } else { diff --git a/src/afl-fuzz-init.c b/src/afl-fuzz-init.c index 645d2cf2..382a3cd9 100644 --- a/src/afl-fuzz-init.c +++ b/src/afl-fuzz-init.c @@ -653,8 +653,9 @@ void read_foreign_testcases(afl_state_t *afl, int first) { u32 len = write_to_testcase(afl, (void **)&mem, st.st_size, 1); fault = fuzz_run_target(afl, &afl->fsrv, afl->fsrv.exec_tmout); afl->syncing_party = foreign_name; + afl->foreign_file = nl[i]->d_name; afl->queued_imported += save_if_interesting(afl, mem, len, fault); - afl->syncing_party = 0; + munmap(mem, st.st_size); close(fd); @@ -679,6 +680,9 @@ void read_foreign_testcases(afl_state_t *afl, int first) { } + afl->foreign_file = NULL; + afl->syncing_party = 0; + if (first) { afl->last_find_time = 0;