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>
This commit is contained in:
parent
039c4c9bbb
commit
c6d49c47a0
1 changed files with 3 additions and 2 deletions
|
@ -87,13 +87,14 @@ bool MemoryMappedFile::Map(const char* path, size_t offset) {
|
||||||
return true;
|
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);
|
sys_close(fd);
|
||||||
if (data == MAP_FAILED) {
|
if (data == MAP_FAILED) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
content_.Set(data, file_len - offset);
|
content_.Set(data, content_len);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue