• Wang Nan's avatar
    perf hists browser: Add NULL pointer check to prevent crash · 837eeb75
    Wang Nan authored
    Before this patch we can trigger a segfault by following steps:
    
     Step 0: Use 'perf record' to generate a perf.data without callchain
    
     Step 1: perf report
    
     Step 2: Use UP/DOWN to select an entry, don't press 'ENTER'
    
     Step 3: Use '/' to filter symbols, use a filter which returns
             empty result
    
     Step 4: Press 'ENTER' (notice here that the old selection is still
    		        there. This is another problem)
    
     Step 5: Press 'ENTER' to annotate that symbol
    
     Step 6: Press 'LEFT' to go out.
    
     Result: segfault:
    
     perf: Segmentation fault
     -------- backtrace --------
     /home/wangnan/perf[0x53e568]
     /lib64/libc.so.6(+0x3545f)[0x7fba75d3245f]
     /home/wangnan/perf[0x537516]
     /home/wangnan/perf[0x533fef]
     /home/wangnan/perf[0x53b347]
     /home/wangnan/perf(perf_evlist__tui_browse_hists+0x96)[0x53d206]
     /home/wangnan/perf(cmd_report+0x1b9f)[0x442c7f]
     /home/wangnan/perf[0x47efa2]
     /home/wangnan/perf(main+0x5f5)[0x432fa5]
     /lib64/libc.so.6(__libc_start_main+0xf4)[0x7fba75d1ebd4]
     /home/wangnan/perf[0x4330d4]
    
    This is because in this case 'nd' could be NULL in
    ui_browser__hists_seek(), but that function never checks it.
    
    This patch adds checker for potential NULL pointer in that function.
    After this patch the above steps won't segfault.
    Signed-off-by: default avatarWang Nan <wangnan0@huawei.com>
    Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Zefan Li <lizefan@huawei.com>
    Cc: pi3orama@163.com
    Link: http://lkml.kernel.org/r/1449455746-41952-3-git-send-email-wangnan0@huawei.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    837eeb75
hists.c 57.8 KB