Index: mozilla/security/nss/lib/nss/nssinit.c =================================================================== RCS file: /cvsroot/mozilla/security/nss/lib/nss/nssinit.c,v retrieving revision 1.105 diff -p -U 8 -r1.105 nssinit.c --- mozilla/security/nss/lib/nss/nssinit.c 22 Jan 2010 02:10:54 -0000 1.105 +++ mozilla/security/nss/lib/nss/nssinit.c 31 Mar 2010 12:36:12 -0000 @@ -575,42 +575,43 @@ nss_Init(const char *configdir, const ch pk11_setGlobalOptions(noSingleThreadedModules, allowAlreadyInitializedModules, dontFinalizeModules); } if (initContextPtr) { *initContextPtr = PORT_ZNew(NSSInitContext); if (*initContextPtr == NULL) { - return SECFailure; + PORT_SetError(SEC_ERROR_NO_MEMORY); + goto loser; } /* * For traditional NSS_Init, we used the PK11_Configure() call to set * globals. with InitContext, we pass those strings in as parameters. * * This allows old NSS_Init calls to work as before, while at the same * time new calls and old calls will not interfere with each other. */ if (initParams) { if (initParams->length < sizeof(NSSInitParameters)) { PORT_SetError(SEC_ERROR_INVALID_ARGS); - return SECFailure; + goto loser; } configStrings = nss_MkConfigString(initParams->manufactureID, initParams->libraryDescription, initParams->cryptoTokenDescription, initParams->dbTokenDescription, initParams->cryptoSlotDescription, initParams->dbSlotDescription, initParams->FIPSSlotDescription, initParams->FIPSTokenDescription, initParams->minPWLen); if (configStrings == NULL) { PORT_SetError(SEC_ERROR_NO_MEMORY); - return SECFailure; + goto loser; } configName = initParams->libraryDescription; passwordRequired = initParams->passwordRequired; } } else { configStrings = pk11_config_strings; configName = pk11_config_name; passwordRequired = pk11_password_required;