diff options
author | Yabin Cui <yabinc@google.com> | 2023-01-17 17:44:54 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2023-01-17 17:44:54 +0000 |
commit | 92ee568d408404cbe05445088d6e45b48a46a920 (patch) | |
tree | 9499016b2138506791d755b105dc4a1014fbef05 | |
parent | d9ebe5109db6deaa698a3b3afd91f9c0a39373ca (diff) | |
parent | bc5b789c5e4d39ec06bb320c187e53e80dac2ab3 (diff) | |
download | extras-92ee568d408404cbe05445088d6e45b48a46a920.tar.gz |
Merge "simpleperf: Check map range in MemAccess."
-rw-r--r-- | simpleperf/ETMDecoder.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/simpleperf/ETMDecoder.cpp b/simpleperf/ETMDecoder.cpp index 7c2928c0..5e2f92e0 100644 --- a/simpleperf/ETMDecoder.cpp +++ b/simpleperf/ETMDecoder.cpp @@ -289,9 +289,14 @@ class MemAccess : public ITargetMemAccess { // addr. if (!map->in_kernel) { data.buffer_map = map; - data.buffer = memory == nullptr ? nullptr : (memory->getBufferStart() + map->pgoff); data.buffer_start = map->start_addr; data.buffer_end = map->get_end_addr(); + if (memory != nullptr && memory->getBufferSize() > map->pgoff && + (memory->getBufferSize() - map->pgoff >= map->len)) { + data.buffer = memory->getBufferStart() + map->pgoff; + } else { + data.buffer = nullptr; + } } } *num_bytes = copy_size; |