[v1,07/11] perf map: Smatch: Fix potential NULL pointer dereference
diff mbox series

Message ID 20190702103420.27540-8-leo.yan@linaro.org
State New
Headers show
Series
  • perf: Fix errors detected by Smatch
Related show

Commit Message

Leo Yan July 2, 2019, 10:34 a.m. UTC
Based on the following report from Smatch, fix the potential
NULL pointer dereference check.

  tools/perf/util/map.c:479
  map__fprintf_srccode() error: we previously assumed 'state' could be
  null (see line 466)

tools/perf/util/map.c
465         /* Avoid redundant printing */
466         if (state &&
467             state->srcfile &&
468             !strcmp(state->srcfile, srcfile) &&
469             state->line == line) {
470                 free(srcfile);
471                 return 0;
472         }
473
474         srccode = find_sourceline(srcfile, line, &len);
475         if (!srccode)
476                 goto out_free_line;
477
478         ret = fprintf(fp, "|%-8d %.*s", line, len, srccode);
479         state->srcfile = srcfile;
            ^^^^^^^
480         state->line = line;
            ^^^^^^^

This patch validates 'state' pointer before access its elements.

Signed-off-by: Leo Yan <leo.yan@linaro.org>
---
 tools/perf/util/map.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

Patch
diff mbox series

diff --git a/tools/perf/util/map.c b/tools/perf/util/map.c
index 6fce983c6115..5f87975d2562 100644
--- a/tools/perf/util/map.c
+++ b/tools/perf/util/map.c
@@ -476,8 +476,11 @@  int map__fprintf_srccode(struct map *map, u64 addr,
 		goto out_free_line;
 
 	ret = fprintf(fp, "|%-8d %.*s", line, len, srccode);
-	state->srcfile = srcfile;
-	state->line = line;
+
+	if (state) {
+		state->srcfile = srcfile;
+		state->line = line;
+	}
 	return ret;
 
 out_free_line: