? .pk11pars.c.swp ? a Index: pk11pars.c =================================================================== RCS file: /cvsroot/mozilla/security/nss/lib/pk11wrap/pk11pars.c,v retrieving revision 1.21 diff -u -p -r1.21 pk11pars.c --- pk11pars.c 12 Nov 2005 00:14:25 -0000 1.21 +++ pk11pars.c 8 Apr 2008 06:59:18 -0000 @@ -291,7 +291,7 @@ SECMOD_FreeModuleSpecList(SECMODModule * * load a PKCS#11 module but do not add it to the default NSS trust domain */ SECMODModule * -SECMOD_LoadModule(char *modulespec,SECMODModule *parent, PRBool recurse) +SECMOD_LoadModule(char *modulespec, SECMODModule *parent, PRBool recurse) { char *library = NULL, *moduleName = NULL, *parameters = NULL, *nss= NULL; SECStatus status; @@ -299,10 +299,13 @@ SECMOD_LoadModule(char *modulespec,SECMO SECStatus rv; /* initialize the underlying module structures */ - SECMOD_Init(); + rv = SECMOD_Init(); + if (status != SECSuccess) { + return NULL; + } status = secmod_argParseModuleSpec(modulespec, &library, &moduleName, - ¶meters, &nss); + ¶meters, &nss); if (status != SECSuccess) { goto loser; } Index: pk11slot.c =================================================================== RCS file: /cvsroot/mozilla/security/nss/lib/pk11wrap/pk11slot.c,v retrieving revision 1.92 diff -u -p -r1.92 pk11slot.c --- pk11slot.c 10 Mar 2008 20:16:46 -0000 1.92 +++ pk11slot.c 8 Apr 2008 06:59:19 -0000 @@ -742,11 +742,12 @@ PK11_RestoreROSession(PK11SlotInfo *slot /* Init the static built int slot list (should actually integrate * with PK11_NewSlotList */ -static void +static void* pk11_InitSlotListStatic(PK11SlotList *list) { list->lock = PZ_NewLock(nssILockList); list->head = NULL; + return list->lock; } @@ -754,26 +755,69 @@ pk11_InitSlotListStatic(PK11SlotList *li SECStatus PK11_InitSlotLists(void) { - pk11_InitSlotListStatic(&pk11_camelliaSlotList); - pk11_InitSlotListStatic(&pk11_aesSlotList); - pk11_InitSlotListStatic(&pk11_desSlotList); - pk11_InitSlotListStatic(&pk11_rc4SlotList); - pk11_InitSlotListStatic(&pk11_rc2SlotList); - pk11_InitSlotListStatic(&pk11_rc5SlotList); - pk11_InitSlotListStatic(&pk11_md5SlotList); - pk11_InitSlotListStatic(&pk11_md2SlotList); - pk11_InitSlotListStatic(&pk11_sha1SlotList); - pk11_InitSlotListStatic(&pk11_rsaSlotList); - pk11_InitSlotListStatic(&pk11_dsaSlotList); - pk11_InitSlotListStatic(&pk11_dhSlotList); - pk11_InitSlotListStatic(&pk11_ecSlotList); - pk11_InitSlotListStatic(&pk11_ideaSlotList); - pk11_InitSlotListStatic(&pk11_sslSlotList); - pk11_InitSlotListStatic(&pk11_tlsSlotList); - pk11_InitSlotListStatic(&pk11_randomSlotList); - pk11_InitSlotListStatic(&pk11_sha256SlotList); - pk11_InitSlotListStatic(&pk11_sha512SlotList); + if (!pk11_InitSlotListStatic(&pk11_camelliaSlotList)) { + goto loser; + } + if (!pk11_InitSlotListStatic(&pk11_aesSlotList)) { + goto loser; + } + if (!pk11_InitSlotListStatic(&pk11_desSlotList)) { + goto loser; + } + if (!pk11_InitSlotListStatic(&pk11_rc4SlotList)) { + goto loser; + } + if (!pk11_InitSlotListStatic(&pk11_rc2SlotList)) { + goto loser; + } + if (!pk11_InitSlotListStatic(&pk11_rc5SlotList)) { + goto loser; + } + if (!pk11_InitSlotListStatic(&pk11_md5SlotList)) { + goto loser; + } + if (!pk11_InitSlotListStatic(&pk11_md2SlotList)) { + goto loser; + } + if (!pk11_InitSlotListStatic(&pk11_sha1SlotList)) { + goto loser; + } + if (!pk11_InitSlotListStatic(&pk11_rsaSlotList)) { + goto loser; + } + if (!pk11_InitSlotListStatic(&pk11_dsaSlotList)) { + goto loser; + } + if (!pk11_InitSlotListStatic(&pk11_dhSlotList)) { + goto loser; + } + if (!pk11_InitSlotListStatic(&pk11_ecSlotList)) { + goto loser; + } + if (!pk11_InitSlotListStatic(&pk11_ideaSlotList)) { + goto loser; + } + if (!pk11_InitSlotListStatic(&pk11_sslSlotList)) { + goto loser; + } + if (!pk11_InitSlotListStatic(&pk11_tlsSlotList)) { + goto loser; + } + if (!pk11_InitSlotListStatic(&pk11_randomSlotList)) { + goto loser; + } + if (!pk11_InitSlotListStatic(&pk11_sha256SlotList)) { + goto loser; + } + if (!pk11_InitSlotListStatic(&pk11_sha512SlotList)) { + goto loser; + } return SECSuccess; + +loser: + PK11_DestroySlotLists(); + PORT_SetError(SEC_ERROR_NO_MEMORY); + return SECFailure; } void Index: pk11util.c =================================================================== RCS file: /cvsroot/mozilla/security/nss/lib/pk11wrap/pk11util.c,v retrieving revision 1.53 diff -u -p -r1.53 pk11util.c --- pk11util.c 28 Sep 2005 17:17:49 -0000 1.53 +++ pk11util.c 8 Apr 2008 06:59:20 -0000 @@ -63,14 +63,20 @@ extern PK11DefaultArrayEntry PK11_Defaul extern int num_pk11_default_mechanisms; -void +SECStatus SECMOD_Init() { /* don't initialize twice */ - if (moduleLock) return; + if (moduleLock) + return SECSuccess; moduleLock = SECMOD_NewListLock(); - PK11_InitSlotLists(); + if (!moduleLock) { + PORT_SetError(SEC_ERROR_NO_MEMORY); + return SECFailure; + } + + return PK11_InitSlotLists(); } Index: secmodi.h =================================================================== RCS file: /cvsroot/mozilla/security/nss/lib/pk11wrap/secmodi.h,v retrieving revision 1.30 diff -u -p -r1.30 secmodi.h --- secmodi.h 10 Mar 2008 20:16:46 -0000 1.30 +++ secmodi.h 8 Apr 2008 06:59:20 -0000 @@ -58,7 +58,7 @@ void nss_DumpModuleLog(void); extern int secmod_PrivateModuleCount; -extern void SECMOD_Init(void); +extern SECStatus SECMOD_Init(void); SECStatus secmod_ModuleInit(SECMODModule *mod, PRBool* alreadyLoaded); /* list managment */