From 390e690e1fe2f38f34998289167682e4286326fd Mon Sep 17 00:00:00 2001 From: "dveditz%cruzio.com" Date: Thu, 4 May 2006 17:59:36 +0000 Subject: [PATCH] bug 283565 fix leak, return more specific error on OOM. patch by timeless, r=kengert, sr=dveditz, a=dveditz git-svn-id: svn://10.0.0.236/branches/MOZILLA_1_8_BRANCH@195973 18797224-902f-48f8-a5cc-f745e15eee43 --- .../security/manager/ssl/src/nsNSSASN1Object.cpp | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/mozilla/security/manager/ssl/src/nsNSSASN1Object.cpp b/mozilla/security/manager/ssl/src/nsNSSASN1Object.cpp index be918582ae2..6b406ec119f 100644 --- a/mozilla/security/manager/ssl/src/nsNSSASN1Object.cpp +++ b/mozilla/security/manager/ssl/src/nsNSSASN1Object.cpp @@ -422,24 +422,20 @@ NS_IMETHODIMP nsNSSASN1PrintableItem::SetData(char *data, PRUint32 len) { if (len > 0) { - if (mData) { - if (mLen < len) - nsMemory::Realloc(mData, len); - } else { - mData = (unsigned char*)nsMemory::Alloc(len); + if (mLen < len) { + unsigned char* newData = (unsigned char*)nsMemory::Realloc(mData, len); + if (!newData) + return NS_ERROR_OUT_OF_MEMORY; + + mData = newData; } - if (mData == nsnull) - return NS_ERROR_FAILURE; memcpy(mData, data, len); } else if (len == 0) { if (mData) { nsMemory::Free(mData); mData = nsnull; } - } else { - NS_ASSERTION(0,"Passed in invalid buffer length to SetData"); - return NS_ERROR_FAILURE; } mLen = len; return NS_OK;