Skip to content

Commit

Permalink
perf trace: Use zfree() to reduce chances of use after free
Browse files Browse the repository at this point in the history
Do defensive programming by using zfree() to initialize freed pointers
to NULL, so that eventual use after free result in a NULL pointer deref
instead of more subtle behaviour.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
  • Loading branch information
Arnaldo Carvalho de Melo committed Apr 12, 2023
1 parent 789eae7 commit 9997d5d
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions tools/perf/builtin-trace.c
Original file line number Diff line number Diff line change
Expand Up @@ -2288,7 +2288,7 @@ static void syscall__exit(struct syscall *sc)
if (!sc)
return;

free(sc->arg_fmt);
zfree(&sc->arg_fmt);
}

static int trace__sys_enter(struct trace *trace, struct evsel *evsel,
Expand Down Expand Up @@ -3124,7 +3124,7 @@ static void evlist__free_syscall_tp_fields(struct evlist *evlist)
if (!et || !evsel->tp_format || strcmp(evsel->tp_format->system, "syscalls"))
continue;

free(et->fmt);
zfree(&et->fmt);
free(et);
}
}
Expand Down Expand Up @@ -4670,11 +4670,11 @@ static void trace__exit(struct trace *trace)
int i;

strlist__delete(trace->ev_qualifier);
free(trace->ev_qualifier_ids.entries);
zfree(&trace->ev_qualifier_ids.entries);
if (trace->syscalls.table) {
for (i = 0; i <= trace->sctbl->syscalls.max_id; i++)
syscall__exit(&trace->syscalls.table[i]);
free(trace->syscalls.table);
zfree(&trace->syscalls.table);
}
syscalltbl__delete(trace->sctbl);
zfree(&trace->perfconfig_events);
Expand Down

0 comments on commit 9997d5d

Please sign in to comment.