aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Stepanyuk <[email protected]>2010-05-27 02:10:11 +0400
committerArnaldo Carvalho de Melo <[email protected]>2010-06-01 05:44:36 -0300
commit75d9ef1707cf3db264a549142a1f54a5380d63dc (patch)
treeb23265c9b0ad7fb042e3f472ca5fed7b0a0205d3
parent546cf44a1b507c1cbb5cf42bbe6169780567f36f (diff)
perf hist: fix objdump output parsing
hist_entry__annotate() runs objdump with -S option so the output may contain lines of any format. If a line starts with a colon strtoull() returns 0 and calculated offset will be negative. This causes perf annotate segfaults. Make sure that strtoull() has parsed at least one digit. Cc: David S. Miller <[email protected]> Cc: Frédéric Weisbecker <[email protected]> Cc: Ingo Molnar <[email protected]> Cc: Mike Galbraith <[email protected]> Cc: Paul Mackerras <[email protected]> Cc: Peter Zijlstra <[email protected]> Cc: Stephane Eranian <[email protected]> Cc: Tom Zanussi <[email protected]> LKML-Reference: <new-submission> Signed-off-by: Konstantin Stepanyuk <[email protected]> Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
-rw-r--r--tools/perf/util/hist.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c
index cbf7eae2ce09..07f89b66b318 100644
--- a/tools/perf/util/hist.c
+++ b/tools/perf/util/hist.c
@@ -965,7 +965,7 @@ static int hist_entry__parse_objdump_line(struct hist_entry *self, FILE *file,
* Parse hexa addresses followed by ':'
*/
line_ip = strtoull(tmp, &tmp2, 16);
- if (*tmp2 != ':')
+ if (*tmp2 != ':' || tmp == tmp2)
line_ip = -1;
}