summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2020-07-31 19:24:50 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2020-07-31 19:24:50 +0000
commitea8d38e77f143cbab19b7deca44043a3632f9ab6 (patch)
treee7d4bee5666465188a56529614b9cce432ed2e6e
parent4048e49956a2dfd49af3adf0f78881bf15f3550f (diff)
parent4d14303653247da3922242796ab6d63123fbd004 (diff)
downloadcore-ea8d38e77f143cbab19b7deca44043a3632f9ab6.tar.gz
Merge "Fail explicitly on length overflow." into oc-dev
-rw-r--r--libutils/FileMap.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/libutils/FileMap.cpp b/libutils/FileMap.cpp
index 1afa1ecae..b9f411ef2 100644
--- a/libutils/FileMap.cpp
+++ b/libutils/FileMap.cpp
@@ -182,6 +182,10 @@ bool FileMap::create(const char* origFileName, int fd, off64_t offset, size_t le
adjust = offset % mPageSize;
adjOffset = offset - adjust;
adjLength = length + adjust;
+ if (__builtin_add_overflow(length, adjust, &adjLength)) {
+ ALOGE("adjusted length overflow: length %zu adjust %d", length, adjust);
+ return false;
+ }
flags = MAP_SHARED;
prot = PROT_READ;