summaryrefslogtreecommitdiff
path: root/tools/perf/builtin-trace.c
diff options
context:
space:
mode:
authorArnaldo Carvalho de Melo <acme@redhat.com>2023-04-12 09:50:08 -0300
committerArnaldo Carvalho de Melo <acme@redhat.com>2023-04-12 09:54:32 -0300
commit9997d5dd177c52017fa0541bf236a4232c8148e6 (patch)
treec73666cc8d58e15cba5566b0896738f1ff7cced2 /tools/perf/builtin-trace.c
parent789eae7f203edc1301d7122ad9b3046e7c56937c (diff)
perf trace: Use zfree() to reduce chances of use after free
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>
Diffstat (limited to 'tools/perf/builtin-trace.c')
-rw-r--r--tools/perf/builtin-trace.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c
index 72ef0bebb06b..8ee3a45c3c54 100644
--- a/tools/perf/builtin-trace.c
+++ b/tools/perf/builtin-trace.c
@@ -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,
@@ -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);
}
}
@@ -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);