diff options
Diffstat (limited to 'libutils/FileMap.cpp')
-rw-r--r-- | libutils/FileMap.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/libutils/FileMap.cpp b/libutils/FileMap.cpp index 1d899ab7f..0abb86191 100644 --- a/libutils/FileMap.cpp +++ b/libutils/FileMap.cpp @@ -189,7 +189,11 @@ bool FileMap::create(const char* origFileName, int fd, off64_t offset, size_t le int adjust = offset % mPageSize; off64_t adjOffset = offset - adjust; - size_t adjLength = length + adjust; + size_t adjLength; + if (__builtin_add_overflow(length, adjust, &adjLength)) { + ALOGE("adjusted length overflow: length %zu adjust %d", length, adjust); + return false; + } int flags = MAP_SHARED; int prot = PROT_READ; |