summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreehugger Robot <treehugger-gerrit@google.com>2022-12-09 23:09:44 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2022-12-09 23:09:44 +0000
commit38a78120109d109d00cf937522f1c2b5f7f944ac (patch)
treea2989f72b647012a10c6f5fa2318360d6336f4bf
parentb78eb761a0b95ed6249212ccb9bfcc4637f9ead8 (diff)
parent6b8e0dfc6f9026d9d70dc5d46c74a9a742efb8db (diff)
downloadextras-38a78120109d109d00cf937522f1c2b5f7f944ac.tar.gz
Merge "simpleperf: fix CHECK_SIZE_U64"
-rw-r--r--simpleperf/record.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/simpleperf/record.cpp b/simpleperf/record.cpp
index 9662b6f7..8d9ce00c 100644
--- a/simpleperf/record.cpp
+++ b/simpleperf/record.cpp
@@ -39,7 +39,12 @@ namespace simpleperf {
} \
} while (0)
-#define CHECK_SIZE_U64(p, end, u64_count) CHECK_SIZE(p, end, (u64_count) * sizeof(uint64_t))
+#define CHECK_SIZE_U64(p, end, u64_count) \
+ do { \
+ if (UNLIKELY(((end) - (p)) / sizeof(uint64_t) < (u64_count))) { \
+ return false; \
+ } \
+ } while (0)
static std::string RecordTypeToString(int record_type) {
static std::unordered_map<int, std::string> record_type_names = {