[tbb-commits] [tor-browser/tor-browser-24.5.0esr-1] fixup! fix #9308 and #11433: don't leak user install path of TBB
mikeperry at torproject.org
mikeperry at torproject.org
Fri Apr 25 17:33:07 UTC 2014
commit 0806951f373ae1b0223229605ca6cca62f7464bd
Author: Mike Perry <mikeperry-git at torproject.org>
Date: Fri Apr 25 14:46:39 2014 +0200
fixup! fix #9308 and #11433: don't leak user install path of TBB
Fix a memory leak, and add a couple length checks for extra safety.
The length checks appear to be redundant to internal nsCString checks, but the
string classes are such a mess of indirection, size, length, and char type
templates that we might as well double-check first.
---
js/xpconnect/src/XPCException.cpp | 1 +
xpcom/build/Omnijar.cpp | 5 +++--
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/js/xpconnect/src/XPCException.cpp b/js/xpconnect/src/XPCException.cpp
index 1e42662..bb4064a 100644
--- a/js/xpconnect/src/XPCException.cpp
+++ b/js/xpconnect/src/XPCException.cpp
@@ -298,6 +298,7 @@ nsXPCException::Initialize(const char *aMessage, nsresult aResult, const char *a
nsAutoCString resourceFilename;
mozilla::Omnijar::ConvertToResourceFilename(nsCString(rawFilename), resourceFilename);
mFilename = (char *) nsMemory::Clone(resourceFilename.get(), resourceFilename.Length()+1);
+ nsMemory::Free(rawFileName); // allocated by GetFilename
if (NS_FAILED(rc = aLocation->GetLineNumber(&mLineNumber)))
return rc;
} else {
diff --git a/xpcom/build/Omnijar.cpp b/xpcom/build/Omnijar.cpp
index 79fa163..36602a7 100644
--- a/xpcom/build/Omnijar.cpp
+++ b/xpcom/build/Omnijar.cpp
@@ -167,9 +167,10 @@ Omnijar::GetURIString(Type aType, nsACString &result)
bool
Omnijar::RebaseFilename(const nsCString& filename, const nsCString& oldBase, const nsCString& newBase, nsACString &result) {
PRInt32 pos = filename.Find(oldBase);
- if (pos > -1) {
+ PRInt32 pathLen = filename.Length() - pos - oldBase.Length();
+ if (pos > -1 && pathLen > -1 && pathLen <= filename.Length()) {
nsAutoCString path;
- filename.Right(path, filename.Length() - pos - oldBase.Length());
+ filename.Right(path, pathLen);
result = newBase + path;
return true;
}
More information about the tbb-commits
mailing list