b=191301 Crash if I cancel "Choose token" dialog on Cert import

r=javi sr=darin a=dbaron


git-svn-id: svn://10.0.0.236/trunk@137345 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
kaie%netscape.com
2003-02-04 01:37:23 +00:00
parent 25d52f399e
commit d7ba6ae565
2 changed files with 22 additions and 13 deletions

View File

@@ -31,7 +31,7 @@
* may use your version of this file under either the MPL or the
* GPL.
*
* $Id: nsPKCS12Blob.cpp,v 1.34 2003-01-18 14:02:59 kaie%netscape.com Exp $
* $Id: nsPKCS12Blob.cpp,v 1.35 2003-02-04 01:37:22 kaie%netscape.com Exp $
*/
#include "prmem.h"
@@ -99,15 +99,16 @@ nsPKCS12Blob::~nsPKCS12Blob()
// nsPKCS12Blob::SetToken
//
// Set the token to use for import/export
void
nsresult
nsPKCS12Blob::SetToken(nsIPK11Token *token)
{
nsNSSShutDownPreventionLock locker;
nsresult rv = NS_OK;
if (token) {
mToken = token;
} else {
PK11SlotInfo *slot;
nsresult rv = GetSlotWithMechanism(CKM_RSA_PKCS, mUIContext,&slot);
rv = GetSlotWithMechanism(CKM_RSA_PKCS, mUIContext,&slot);
if (NS_FAILED(rv)) {
mToken = 0;
} else {
@@ -116,6 +117,7 @@ nsPKCS12Blob::SetToken(nsIPK11Token *token)
}
}
mTokenSet = PR_TRUE;
return rv;
}
// nsPKCS12Blob::ImportFromFile
@@ -126,16 +128,23 @@ nsresult
nsPKCS12Blob::ImportFromFile(nsILocalFile *file)
{
nsNSSShutDownPreventionLock locker;
nsresult rv;
nsresult rv = NS_OK;
if (!mToken && !mTokenSet) {
SetToken(NULL); // Ask the user to pick a slot
} else if (!mToken && mTokenSet) {
// Someone tried setting the token before, but that failed.
// Probably because the user canceled.
handleError(PIP_PKCS12_USER_CANCELED);
return NS_OK;
if (!mToken) {
if (!mTokenSet) {
rv = SetToken(NULL); // Ask the user to pick a slot
if (NS_FAILED(rv)) {
handleError(PIP_PKCS12_USER_CANCELED);
return rv;
}
}
}
if (!mToken) {
handleError(PIP_PKCS12_RESTORE_FAILED);
return NS_ERROR_NOT_AVAILABLE;
}
// init slot
rv = mToken->Login(PR_TRUE);
if (NS_FAILED(rv)) return rv;

View File

@@ -31,7 +31,7 @@
* may use your version of this file under either the MPL or the
* GPL.
*
* $Id: nsPKCS12Blob.h,v 1.10 2002-10-14 14:48:57 kaie%netscape.com Exp $
* $Id: nsPKCS12Blob.h,v 1.11 2003-02-04 01:37:23 kaie%netscape.com Exp $
*/
#ifndef _NS_PKCS12BLOB_H_
@@ -65,7 +65,7 @@ public:
virtual ~nsPKCS12Blob();
// Set the token to use (default is internal)
void SetToken(nsIPK11Token *token);
nsresult SetToken(nsIPK11Token *token);
// PKCS#12 Import
nsresult ImportFromFile(nsILocalFile *file);