aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgmx <gmx@google.com>2023-11-14 23:32:32 -0800
committergmarin13 <gmarin13@users.noreply.github.com>2023-11-28 13:42:45 -0800
commit12da678f7452a76447bc16de33d611b150f4bed4 (patch)
tree6e4d377ddf6f41e09377b62263732983b3e0ded9
parentdf0422804fc06863ca3f04b7d31b551384bb7e7a (diff)
downloadperf_data_converter-12da678f7452a76447bc16de33d611b150f4bed4.tar.gz
Check that the parsed number of events doesn't exceed the maximum representable
int value. PiperOrigin-RevId: 582556489
-rw-r--r--src/quipper/perf_reader.cc5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/quipper/perf_reader.cc b/src/quipper/perf_reader.cc
index 6a1850c..006d571 100644
--- a/src/quipper/perf_reader.cc
+++ b/src/quipper/perf_reader.cc
@@ -10,6 +10,7 @@
#include <sys/time.h>
#include <algorithm>
+#include <limits>
#include <vector>
#include "base/logging.h"
@@ -1513,6 +1514,10 @@ bool PerfReader::ReadEventDescMetadata(DataReader* data) {
LOG(ERROR) << "Error reading event_desc nr_events.";
return false;
}
+ if (nr_events > std::numeric_limits<int>::max()) {
+ LOG(ERROR) << "Parsed nr_events exceeds the max representable int value.";
+ return false;
+ }
u32 attr_size;
if (!data->ReadUint32(&attr_size)) {