summaryrefslogtreecommitdiff
path: root/cmds/idmap2/libidmap2/ZipFile.cpp
diff options
context:
space:
mode:
authorMÃ¥rten Kongstad <marten.kongstad@sony.com>2019-09-26 15:03:50 +0200
committerTodd Kennedy <toddke@google.com>2019-09-26 14:37:50 -0700
commit0955d208a2ae62fb676567f46eb0d7f238b2573a (patch)
treefe49ff5c26367786c87ca47d927171bcc1a863b8 /cmds/idmap2/libidmap2/ZipFile.cpp
parente2415eeea0c43259bb86e34613d84d4014fc8fbe (diff)
idmap2: ZipFile::Open: fix potential memory leak
Even if OpenArchive in libziparchive returns a non-zero value (indicating failure), it will have allocated memory that needs to be freed via CloseArchive. Add the missing call. Test: valgrind --leak-check=full --show-leak-kinds=all --error-exitcode=1 $ANDROID_HOST_OUT/nativetest64/idmap2_tests/idmap2_tests Change-Id: I92d47459c27e62ba4544327d7b7f3c4106e6ad34
Diffstat (limited to 'cmds/idmap2/libidmap2/ZipFile.cpp')
-rw-r--r--cmds/idmap2/libidmap2/ZipFile.cpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/cmds/idmap2/libidmap2/ZipFile.cpp b/cmds/idmap2/libidmap2/ZipFile.cpp
index 4f5e3a45f183..1e1a218163f0 100644
--- a/cmds/idmap2/libidmap2/ZipFile.cpp
+++ b/cmds/idmap2/libidmap2/ZipFile.cpp
@@ -34,6 +34,7 @@ std::unique_ptr<const ZipFile> ZipFile::Open(const std::string& path) {
::ZipArchiveHandle handle;
int32_t status = ::OpenArchive(path.c_str(), &handle);
if (status != 0) {
+ ::CloseArchive(handle);
return nullptr;
}
return std::unique_ptr<ZipFile>(new ZipFile(handle));