Index: mozilla/security/nss/lib/softoken/pkcs11c.c =================================================================== RCS file: /cvsroot/mozilla/security/nss/lib/softoken/pkcs11c.c,v retrieving revision 1.114 diff -p -u -8 -r1.114 pkcs11c.c --- mozilla/security/nss/lib/softoken/pkcs11c.c 4 Aug 2010 00:37:39 -0000 1.114 +++ mozilla/security/nss/lib/softoken/pkcs11c.c 5 Aug 2010 00:40:34 -0000 @@ -2493,21 +2493,23 @@ CK_RV NSC_VerifyInit(CK_SESSION_HANDLE h case CKM_RSA_PKCS: context->verify = (SFTKVerify) RSA_CheckSign; goto finish_rsa; case CKM_RSA_X_509: context->verify = (SFTKVerify) RSA_CheckSignRaw; finish_rsa: if (key_type != CKK_RSA) { + if (info) PORT_Free(info); crv = CKR_KEY_TYPE_INCONSISTENT; break; } pubKey = sftk_GetPubKey(key,CKK_RSA,&crv); if (pubKey == NULL) { + if (info) PORT_Free(info); break; } if (info) { info->key = pubKey; context->cipherInfo = info; context->destroy = sftk_Space; } else { context->cipherInfo = pubKey; @@ -2526,16 +2528,17 @@ finish_rsa: info = PORT_New(SFTKHashVerifyInfo); if (info == NULL) { crv = CKR_HOST_MEMORY; break; } info->params = pMechanism->pParameter; info->key = sftk_GetPubKey(key,CKK_RSA,&crv); if (info->key == NULL) { + PORT_Free(info); break; } context->cipherInfo = info; context->destroy = (SFTKDestroy) sftk_Space; context->verify = (SFTKVerify) sftk_CheckSignPSS; break; case CKM_DSA_SHA1: context->multi = PR_TRUE;