load run time and donot load pending_* or *_favoured
MODIFY
include/afl-fuzz.h
include/afl-fuzz.h
@@ -1067,7 +1067,7 @@ void destroy_extras(afl_state_t *);
/* Stats */
-void load_stats_file(afl_state_t *);
+u32 load_stats_file(afl_state_t *);
void write_setup_file(afl_state_t *, u32, char **);
void write_stats_file(afl_state_t *, double, double, double);
void maybe_update_plot_file(afl_state_t *, double, double);

MODIFY
src/afl-fuzz-stats.c
src/afl-fuzz-stats.c
@@ -90,20 +90,20 @@ void write_setup_file(afl_state_t *afl, u32 argc, char **argv) {
}
/* load some of the existing stats file when resuming.*/
-void load_stats_file(afl_state_t *afl) {
+u32 load_stats_file(afl_state_t *afl) {
FILE *f;
u8 buf[MAX_LINE];
u8 * lptr;
u8 fn[PATH_MAX];
u32 lineno = 0;
-
+ u32 prev_run_time = 0;
snprintf(fn, PATH_MAX, "%s/fuzzer_stats", afl->out_dir);
f = fopen(fn, "r");
if (!f) {
WARNF("Unable to load stats file '%s'", fn);
- return;
+ return prev_run_time;
}
@@ -134,6 +134,15 @@ void load_stats_file(afl_state_t *afl) {
char *nptr;
switch (lineno) {
+ case 3:
+ if (!strcmp(keystring, "run_time ")) {
+
+ prev_run_time = 1000 * strtoull(lptr, &nptr, 10);
+ afl->start_time -= prev_run_time;
+
+ }
+
+ break;
case 5:
if (!strcmp(keystring, "cycles_done "))
afl->queue_cycle =
@@ -147,10 +156,6 @@ void load_stats_file(afl_state_t *afl) {
if (!strcmp(keystring, "paths_total "))
afl->queued_paths = strtoul(lptr, &nptr, 10);
break;
- case 11:
- if (!strcmp(keystring, "paths_favored "))
- afl->queued_favored = strtoul(lptr, &nptr, 10);
- break;
case 12:
if (!strcmp(keystring, "paths_found "))
afl->queued_discovered = strtoul(lptr, &nptr, 10);
@@ -163,14 +168,6 @@ void load_stats_file(afl_state_t *afl) {
if (!strcmp(keystring, "max_depth "))
afl->max_depth = strtoul(lptr, &nptr, 10);
break;
- case 16:
- if (!strcmp(keystring, "pending_favs "))
- afl->pending_favored = strtoul(lptr, &nptr, 10);
- break;
- case 17:
- if (!strcmp(keystring, "pending_total "))
- afl->pending_not_fuzzed = strtoul(lptr, &nptr, 10);
- break;
case 21:
if (!strcmp(keystring, "unique_crashes "))
afl->unique_crashes = strtoull(lptr, &nptr, 10);
@@ -188,6 +185,8 @@ void load_stats_file(afl_state_t *afl) {
}
+ return prev_run_time;
+
}
/* Update stats file for unattended monitoring. */

MODIFY
src/afl-fuzz.c
src/afl-fuzz.c
@@ -1682,7 +1682,11 @@ int main(int argc, char **argv_orig, char **envp) {
if (unlikely(afl->old_seed_selection)) seek_to = find_start_position(afl);
- if (afl->in_place_resume || afl->afl_env.afl_autoresume) load_stats_file(afl);
+ u32 prev_run_time = 0; // to not call load_stats_file again after line 1705
+ afl->start_time = get_cur_time(); // without this, time taken for
+ // perform_dry_run gets added to run time.
+ if (afl->in_place_resume || afl->afl_env.afl_autoresume)
+ prev_run_time = load_stats_file(afl);
write_stats_file(afl, 0, 0, 0);
maybe_update_plot_file(afl, 0, 0);
save_auto(afl);
@@ -1701,6 +1705,8 @@ int main(int argc, char **argv_orig, char **envp) {
// (void)nice(-20); // does not improve the speed
// real start time, we reset, so this works correctly with -V
afl->start_time = get_cur_time();
+ if (afl->in_place_resume || afl->afl_env.afl_autoresume)
+ afl->start_time -= prev_run_time;
u32 runs_in_current_cycle = (u32)-1;
u32 prev_queued_paths = 0;

load run time and donot load pending_* or *_favoured