• Wang Nan's avatar
    perf tools: Fix crash in build_id_cache__kallsyms_path() · c58c49ac
    Wang Nan authored
    build_id_cache__kallsyms_path() accepts a string buffer but also allocs
    a buffer using asnprintf. Unfortunately, the its only user passes it a
    stack-allocated buffer. Freeing it causes crashes like this:
    
      $ perf script
      *** Error in `/home/wangnan/perf': free(): invalid pointer: 0x00007fffffff9630 ***
      ======= Backtrace: =========
      lib64/libc.so.6(+0x6eeef)[0x7ffff5dbaeef]
      lib64/libc.so.6(+0x78cae)[0x7ffff5dc4cae]
      lib64/libc.so.6(+0x79987)[0x7ffff5dc5987]
      /home/w00229757/perf(build_id_cache__kallsyms_path+0x6b)[0x49681b]
      /home/w00229757/perf[0x4bdd40]
      /home/w00229757/perf(dso__load+0xa3a)[0x4c048a]
      /home/w00229757/perf(map__load+0x6f)[0x4d561f]
      /home/w00229757/perf(thread__find_addr_map+0x235)[0x49e935]
      /home/w00229757/perf(machine__resolve+0x7d)[0x49ec6d]
      /home/w00229757/perf[0x4555a8]
      /home/w00229757/perf[0x4d9507]
      /home/w00229757/perf[0x4d9e80]
      /home/w00229757/perf(ordered_events__flush+0x354)[0x4dd444]
      /home/w00229757/perf(perf_session__process_events+0x3d0)[0x4dc140]
      /home/w00229757/perf(cmd_script+0x12b0)[0x4592e0]
      /home/w00229757/perf[0x4911f1]
      /home/w00229757/perf(main+0x68f)[0x4352ef]
      /lib64/libc.so.6(__libc_start_main+0xf5)[0x7ffff5d6dbd5]
      /home/w00229757/perf[0x435415]
      ======= Memory map: ========
    
    This patch simplifies build_id_cache__kallsyms_path(), not even
    considering allocating a string buffer, so never frees anything. Its
    caller should manage memory allocation.
    Signed-off-by: default avatarWang Nan <wangnan0@huawei.com>
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Zefan Li <lizefan@huawei.com>
    Cc: pi3orama@163.com
    Fixes: 01412261 ("perf buildid-cache: Use path/to/bin/buildid/elf instead of path/to/bin/buildid")
    Link: http://lkml.kernel.org/r/1465271678-7392-1-git-send-email-wangnan0@huawei.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    c58c49ac
build-id.c 13.7 KB