Added flag -u to allow custom interval to update fuzzer_stats file

This commit is contained in:
Amit Elkabetz
2023-03-05 18:16:21 +02:00
parent 2ff0ff7a90
commit 07cf27cddc
4 changed files with 17 additions and 4 deletions

View File

@ -693,6 +693,7 @@ typedef struct afl_state {
/* statistics file */ /* statistics file */
double last_bitmap_cvg, last_stability, last_eps; double last_bitmap_cvg, last_stability, last_eps;
u64 stats_file_update_freq_msecs; /* Stats update frequency (msecs) */
/* plot file saves from last run */ /* plot file saves from last run */
u32 plot_prev_qp, plot_prev_pf, plot_prev_pnf, plot_prev_ce, plot_prev_md; u32 plot_prev_qp, plot_prev_pf, plot_prev_pnf, plot_prev_ce, plot_prev_md;

View File

@ -100,6 +100,7 @@ void afl_state_init(afl_state_t *afl, uint32_t map_size) {
afl->hang_tmout = EXEC_TIMEOUT; afl->hang_tmout = EXEC_TIMEOUT;
afl->exit_on_time = 0; afl->exit_on_time = 0;
afl->stats_update_freq = 1; afl->stats_update_freq = 1;
afl->stats_file_update_freq_msecs = STATS_UPDATE_SEC * 1000;
afl->stats_avg_exec = 0; afl->stats_avg_exec = 0;
afl->skip_deterministic = 1; afl->skip_deterministic = 1;
afl->sync_time = SYNC_TIME; afl->sync_time = SYNC_TIME;

View File

@ -613,7 +613,7 @@ void show_stats_normal(afl_state_t *afl) {
if (unlikely(!afl->non_instrumented_mode && if (unlikely(!afl->non_instrumented_mode &&
(afl->force_ui_update || (afl->force_ui_update ||
cur_ms - afl->stats_last_stats_ms > STATS_UPDATE_SEC * 1000))) { cur_ms - afl->stats_last_stats_ms > afl->stats_file_update_freq_msecs))) {
afl->stats_last_stats_ms = cur_ms; afl->stats_last_stats_ms = cur_ms;
write_stats_file(afl, t_bytes, t_byte_ratio, stab_ratio, write_stats_file(afl, t_bytes, t_byte_ratio, stab_ratio,

View File

@ -210,7 +210,10 @@ static void usage(u8 *argv0, int more_help) {
" -b cpu_id - bind the fuzzing process to the specified CPU core " " -b cpu_id - bind the fuzzing process to the specified CPU core "
"(0-...)\n" "(0-...)\n"
" -e ext - file extension for the fuzz test input file (if " " -e ext - file extension for the fuzz test input file (if "
"needed)\n\n", "needed)\n"
" -u - interval to update fuzzer_stats file in seconds, "
"defaults to 60 sec\n"
"\n",
argv0, EXEC_TIMEOUT, MEM_LIMIT, MAX_FILE, FOREIGN_SYNCS_MAX); argv0, EXEC_TIMEOUT, MEM_LIMIT, MAX_FILE, FOREIGN_SYNCS_MAX);
if (more_help > 1) { if (more_help > 1) {
@ -501,7 +504,7 @@ fail:
int main(int argc, char **argv_orig, char **envp) { int main(int argc, char **argv_orig, char **envp) {
s32 opt, auto_sync = 0 /*, user_set_cache = 0*/; s32 opt, auto_sync = 0 /*, user_set_cache = 0*/;
u64 prev_queued = 0; u64 prev_queued = 0, stats_update_freq_sec = 0;
u32 sync_interval_cnt = 0, seek_to = 0, show_help = 0, default_output = 1, u32 sync_interval_cnt = 0, seek_to = 0, show_help = 0, default_output = 1,
map_size = get_map_size(); map_size = get_map_size();
u8 *extras_dir[4]; u8 *extras_dir[4];
@ -553,7 +556,7 @@ int main(int argc, char **argv_orig, char **envp) {
while ( while (
(opt = getopt( (opt = getopt(
argc, argv, argc, argv,
"+Ab:B:c:CdDe:E:hi:I:f:F:g:G:l:L:m:M:nNOo:p:RQs:S:t:T:UV:WXx:YZ")) > "+Ab:B:c:CdDe:E:hi:I:f:F:g:G:l:L:m:M:nNOo:p:RQs:S:t:T:u:UV:WXx:YZ")) >
0) { 0) {
switch (opt) { switch (opt) {
@ -665,6 +668,14 @@ int main(int argc, char **argv_orig, char **envp) {
break; break;
case 'u':
if (sscanf(optarg, "%llu", &stats_update_freq_sec) < 1) {
FATAL("Bad syntax used for -u");
}
afl->stats_file_update_freq_msecs = stats_update_freq_sec * 1000;
break;
case 'i': /* input dir */ case 'i': /* input dir */
if (afl->in_dir) { FATAL("Multiple -i options not supported"); } if (afl->in_dir) { FATAL("Multiple -i options not supported"); }