From b031ecd7d5c35549893980efbba911ddae6cd2d5 Mon Sep 17 00:00:00 2001 From: "timeless%mozdev.org" Date: Thu, 11 Sep 2003 01:59:21 +0000 Subject: [PATCH] Bug 211291 void nsCertTree::InitCompareHash doesn't check the return value of PL_DHashTableInit r=kaie sr=bz git-svn-id: svn://10.0.0.236/trunk@146710 18797224-902f-48f8-a5cc-f745e15eee43 --- .../security/manager/ssl/src/nsCertTree.cpp | 20 ++++++++++++------- mozilla/security/manager/ssl/src/nsCertTree.h | 2 +- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/mozilla/security/manager/ssl/src/nsCertTree.cpp b/mozilla/security/manager/ssl/src/nsCertTree.cpp index bb49ecc5012..9fe44cddd4e 100644 --- a/mozilla/security/manager/ssl/src/nsCertTree.cpp +++ b/mozilla/security/manager/ssl/src/nsCertTree.cpp @@ -133,11 +133,15 @@ void nsCertTree::ClearCompareHash() } } -void nsCertTree::InitCompareHash() +nsresult nsCertTree::InitCompareHash() { ClearCompareHash(); - PL_DHashTableInit(&mCompareCache, &gMapOps, nsnull, - sizeof(CompareCacheHashEntry), 128); + if (!PL_DHashTableInit(&mCompareCache, &gMapOps, nsnull, + sizeof(CompareCacheHashEntry), 128)) { + mCompareCache.ops = nsnull; + return NS_ERROR_OUT_OF_MEMORY; + } + return NS_OK; } nsCertTree::~nsCertTree() @@ -352,14 +356,15 @@ nsCertTree::GetCertsByTypeFromCache(nsINSSCertCache *aCache, NS_IMETHODIMP nsCertTree::LoadCertsFromCache(nsINSSCertCache *aCache, PRUint32 aType) { - nsresult rv; if (mTreeArray) { FreeCertArray(); delete [] mTreeArray; mTreeArray = NULL; mNumRows = 0; } - InitCompareHash(); + nsresult rv = InitCompareHash(); + if (NS_FAILED(rv)) return rv; + rv = GetCertsByTypeFromCache(aCache, aType, GetCompareFuncFromCertType(aType), &mCompareCache, getter_AddRefs(mCertArray)); @@ -370,14 +375,15 @@ nsCertTree::LoadCertsFromCache(nsINSSCertCache *aCache, PRUint32 aType) NS_IMETHODIMP nsCertTree::LoadCerts(PRUint32 aType) { - nsresult rv; if (mTreeArray) { FreeCertArray(); delete [] mTreeArray; mTreeArray = NULL; mNumRows = 0; } - InitCompareHash(); + nsresult rv = InitCompareHash(); + if (NS_FAILED(rv)) return rv; + rv = GetCertsByType(aType, GetCompareFuncFromCertType(aType), &mCompareCache, getter_AddRefs(mCertArray)); diff --git a/mozilla/security/manager/ssl/src/nsCertTree.h b/mozilla/security/manager/ssl/src/nsCertTree.h index b32c7be5c0b..52db30096e4 100644 --- a/mozilla/security/manager/ssl/src/nsCertTree.h +++ b/mozilla/security/manager/ssl/src/nsCertTree.h @@ -72,7 +72,7 @@ public: sort_CommonName, sort_IssuedDateDescending, sort_Email, sort_None }; protected: - void InitCompareHash(); + nsresult InitCompareHash(); void ClearCompareHash(); void RemoveCacheEntry(void *key);