summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBas Schouten <bschouten@mozilla.com>2020-05-05 23:22:19 +0000
committerwolfbeast <mcwerewolf@wolfbeast.com>2020-05-06 19:02:28 +0200
commit6afd96c4602b611993f7c6128f29ea59a104992f (patch)
treee50a0960a00fb82eed5f520cf7f3823e47186794
parent9858dc03cb6755412a0f4e5ee96ba21b5b669ea1 (diff)
downloaduxp-6afd96c4602b611993f7c6128f29ea59a104992f.tar.gz
Prevent the existance of dangling pointers upon failure of FindDataStart.
-rw-r--r--modules/libjar/nsZipArchive.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/modules/libjar/nsZipArchive.cpp b/modules/libjar/nsZipArchive.cpp
index 841503ebf3..2f12af5f0c 100644
--- a/modules/libjar/nsZipArchive.cpp
+++ b/modules/libjar/nsZipArchive.cpp
@@ -217,16 +217,17 @@ nsresult nsZipHandle::Init(nsIFile *file, nsZipHandle **ret,
#else
handle->mNSPRFileDesc = fd.forget();
#endif
- handle->mMap = map;
handle->mFile.Init(file);
handle->mTotalLen = (uint32_t) size;
handle->mFileStart = buf;
rv = handle->findDataStart();
if (NS_FAILED(rv)) {
PR_MemUnmap(buf, (uint32_t) size);
+ handle->mFileStart = nullptr;
PR_CloseFileMap(map);
return rv;
}
+ handle->mMap = map;
handle.forget(ret);
return NS_OK;
}