aboutsummaryrefslogtreecommitdiff
path: root/src/common/linux/memory_mapped_file.cc
diff options
context:
space:
mode:
authorSim Sun <sunsj1231@gmail.com>2020-09-04 17:59:14 -0700
committerMike Frysinger <vapier@chromium.org>2020-09-05 02:52:36 +0000
commitc6d49c47a0855f6d1283771b56e1f2a7ab2599b0 (patch)
tree35d3c4fe1e984bd3f31bbfa1c14e031cff9eef3e /src/common/linux/memory_mapped_file.cc
parentAdd a .clang-format file to give us local control over Chromium style. (diff)
downloadbreakpad-c6d49c47a0855f6d1283771b56e1f2a7ab2599b0.tar.xz
linux: Fix leak when the offset of memory_mapped_file is greater than 0
Breakpad should only map the file content after the offset instead of the whole file. Mapping the whole file while only unmap 'file_len - offset' would leak 'offset' bytes of mapping in virtual memory. Change-Id: I10be4f929d969703a6a02c1f709d2a4ca86a6e9e Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2393468 Reviewed-by: Mike Frysinger <vapier@chromium.org>
Diffstat (limited to 'src/common/linux/memory_mapped_file.cc')
-rw-r--r--src/common/linux/memory_mapped_file.cc5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/common/linux/memory_mapped_file.cc b/src/common/linux/memory_mapped_file.cc
index 4e938269..99362945 100644
--- a/src/common/linux/memory_mapped_file.cc
+++ b/src/common/linux/memory_mapped_file.cc
@@ -87,13 +87,14 @@ bool MemoryMappedFile::Map(const char* path, size_t offset) {
return true;
}
- void* data = sys_mmap(NULL, file_len, PROT_READ, MAP_PRIVATE, fd, offset);
+ size_t content_len = file_len - offset;
+ void* data = sys_mmap(NULL, content_len, PROT_READ, MAP_PRIVATE, fd, offset);
sys_close(fd);
if (data == MAP_FAILED) {
return false;
}
- content_.Set(data, file_len - offset);
+ content_.Set(data, content_len);
return true;
}