perf annotate: Fix heap overflow
authorIan Rogers <irogers@google.com>
Sat, 26 Oct 2019 03:56:44 +0000 (20:56 -0700)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Thu, 7 Nov 2019 11:30:18 +0000 (08:30 -0300)
Fix expand_tabs that copies the source lines '\0' and then appends
another '\0' at a potentially out of bounds address.

Signed-off-by: Ian Rogers <irogers@google.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Jin Yao <yao.jin@linux.intel.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Song Liu <songliubraving@fb.com>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lore.kernel.org/lkml/20191026035644.217548-1-irogers@google.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/util/annotate.c

index ef1866a902c442158fa348bcd3f7cb1b1fb381b4..bee0fee122f85427671cd3a325520ff3b82d7fc6 100644 (file)
@@ -1892,7 +1892,7 @@ static char *expand_tabs(char *line, char **storage, size_t *storage_len)
        }
 
        /* Expand the last region. */
-       len = line_len + 1 - src;
+       len = line_len - src;
        memcpy(&new_line[dst], &line[src], len);
        dst += len;
        new_line[dst] = '\0';