Commit 9997d5dd authored by Arnaldo Carvalho de Melo's avatar Arnaldo Carvalho de Melo
Browse files

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: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 789eae7f
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -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);