diff options
author | Frederic Weisbecker <[email protected]> | 2011-05-21 17:07:24 +0200 |
---|---|---|
committer | Frederic Weisbecker <[email protected]> | 2011-05-22 03:12:13 +0200 |
commit | eac9eacee1602710dda47c517ad0b61ac6f429bf (patch) | |
tree | ea59e724cec133e301cd73306e31362a1ddfe8f3 | |
parent | c5fc472171ec4f96d06d1ac039d88f9b89bb95db (diff) |
perf tools: Check we are able to read the event size on mmap
Check we have enough mmaped space to read the current event
size from its headers, otherwise we may dereference some
hell there.
Signed-off-by: Frederic Weisbecker <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Arnaldo Carvalho de Melo <[email protected]>
Cc: Stephane Eranian <[email protected]>
-rw-r--r-- | tools/perf/util/session.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c index fff66741f18d..61746b5866d8 100644 --- a/tools/perf/util/session.c +++ b/tools/perf/util/session.c @@ -1007,6 +1007,13 @@ remap: file_pos = file_offset + head; more: + /* + * Ensure we have enough space remaining to read + * the size of the event in the headers. + */ + if (head + sizeof(event->header) > mmap_size) + goto remap; + event = (union perf_event *)(buf + head); if (session->header.needs_swap) |