From d1531ac4e8dc8f57eddf06f1b4a9a93ca67a8ae0 Mon Sep 17 00:00:00 2001 From: Ryan Mitchell Date: Tue, 28 May 2019 15:42:14 -0700 Subject: [PATCH] Fix leak of mapped zip central directories Memory mapping the central directory of specific APKs caused memory mappings to build up over time because they were never unmapped correctly. This is because MappedFile is not calling munmap with the size of the data after aligning the mmap offset to a page boundary. Bug: 133463863 Test: install APKs and verify that the entire mapped CD is unmaped Test: ran aapt2 as daemon and confirmed that mapped CD is unmapped Change-Id: Icb6cfebe0e8d67160fee34c5e6423d0f05de526b --- base/mapped_file.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/mapped_file.cpp b/base/mapped_file.cpp index 7c65dc3c5..d26e8ba91 100644 --- a/base/mapped_file.cpp +++ b/base/mapped_file.cpp @@ -76,7 +76,7 @@ MappedFile::~MappedFile() { if (base_ != nullptr) UnmapViewOfFile(base_); if (handle_ != nullptr) CloseHandle(handle_); #else - if (base_ != nullptr) munmap(base_, size_); + if (base_ != nullptr) munmap(base_, size_ + offset_); #endif base_ = nullptr;