diff options
author | Frederic Weisbecker <fweisbec@gmail.com> | 2011-05-21 13:33:04 -0400 |
---|---|---|
committer | Frederic Weisbecker <fweisbec@gmail.com> | 2011-05-21 21:38:36 -0400 |
commit | a285412479b6d5af3e48273a92ec2f1987df8cd1 (patch) | |
tree | 29f68684cebb26b86c3dd0b0f0fc4e5d6553c989 /tools/perf/util/session.h | |
parent | 74429964d8e29c0107fa6e9cdf35b8f33f57405d (diff) |
perf tools: Pre-check sample size before parsing
Check that the total size of the sample fields having a fixed
size do not exceed the one of the whole event. This robustifies
the sample parsing.
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Stephane Eranian <eranian@google.com>
Diffstat (limited to 'tools/perf/util/session.h')
-rw-r--r-- | tools/perf/util/session.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/tools/perf/util/session.h b/tools/perf/util/session.h index 8daaa2d15396..66d4e1490879 100644 --- a/tools/perf/util/session.h +++ b/tools/perf/util/session.h | |||
@@ -43,6 +43,7 @@ struct perf_session { | |||
43 | */ | 43 | */ |
44 | struct hists hists; | 44 | struct hists hists; |
45 | u64 sample_type; | 45 | u64 sample_type; |
46 | int sample_size; | ||
46 | int fd; | 47 | int fd; |
47 | bool fd_pipe; | 48 | bool fd_pipe; |
48 | bool repipe; | 49 | bool repipe; |
@@ -159,6 +160,7 @@ static inline int perf_session__parse_sample(struct perf_session *session, | |||
159 | struct perf_sample *sample) | 160 | struct perf_sample *sample) |
160 | { | 161 | { |
161 | return perf_event__parse_sample(event, session->sample_type, | 162 | return perf_event__parse_sample(event, session->sample_type, |
163 | session->sample_size, | ||
162 | session->sample_id_all, sample); | 164 | session->sample_id_all, sample); |
163 | } | 165 | } |
164 | 166 | ||