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>
This commit is contained in:
Frederic Weisbecker
2011-05-21 19:33:04 +02:00
parent 74429964d8
commit a285412479
7 changed files with 41 additions and 5 deletions

View File

@ -35,6 +35,22 @@ const char *perf_event__name(unsigned int id)
return perf_event__names[id];
}
int perf_sample_size(u64 sample_type)
{
u64 mask = sample_type & PERF_SAMPLE_MASK;
int size = 0;
int i;
for (i = 0; i < 64; i++) {
if ((mask << i) & 1)
size++;
}
size *= sizeof(u64);
return size;
}
static struct perf_sample synth_sample = {
.pid = -1,
.tid = -1,