• Numfor Mbiziwo-Tiapo's avatar
    perf annotate: Fix non-null terminated buffer returned by readlink() · b39730a6
    Numfor Mbiziwo-Tiapo authored
    Our local MSAN (Memory Sanitizer) build of perf throws a warning that
    comes from the "dso__disassemble_filename" function in
    "tools/perf/util/annotate.c" when running perf record.
    
    The warning stems from the call to readlink, in which "build_id_path"
    was being read into "linkname". Since readlink does not null terminate,
    an uninitialized memory access would later occur when "linkname" is
    passed into the strstr function. This is simply fixed by
    null-terminating "linkname" after the call to readlink.
    
    To reproduce this warning, build perf by running:
    
      $ make -C tools/perf CLANG=1 CC=clang EXTRA_CFLAGS="-fsanitize=memory -fsanitize-memory-track-origins"
    
    (Additionally, llvm might have to be installed and clang might have to
    be specified as the compiler - export CC=/usr/bin/clang)
    
    Then running:
    
      tools/perf/perf record -o - ls / | tools/perf/perf --no-pager annotate -i - --stdio
    
    Please see the cover letter for why false positive warnings may be
    generated.
    Signed-off-by: default avatarNumfor Mbiziwo-Tiapo <nums@google.com>
    Acked-by: default avatarIan Rogers <irogers@google.com>
    Acked-by: default avatarJiri Olsa <jolsa@kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Mark Drayton <mbd@fb.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/20190729205750.193289-1-nums@google.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    b39730a6
annotate.c 78.1 KB