diff options
author | alexei.volkov.bugs%sun.com <devnull@localhost> | 2007-09-19 19:29:47 +0000 |
---|---|---|
committer | alexei.volkov.bugs%sun.com <devnull@localhost> | 2007-09-19 19:29:47 +0000 |
commit | 26b8b18a235231e9cc0e070392ca28b1a39c23af (patch) | |
tree | b11854fca2f9c7bfe12799a0dd1b68f1b9e9e5de | |
parent | 59a25040a9d1cc260ff4dbc4574ea07dcb6ec149 (diff) | |
download | nss-hg-26b8b18a235231e9cc0e070392ca28b1a39c23af.tar.gz |
395427 - PKIX_PL_Initialize must not call NSS_Init. r=nelson
-rwxr-xr-x | security/nss/lib/libpkix/include/pkix.h | 28 | ||||
-rwxr-xr-x | security/nss/lib/libpkix/include/pkix_pl_system.h | 4 | ||||
-rwxr-xr-x | security/nss/lib/libpkix/pkix/top/pkix_lifecycle.c | 35 | ||||
-rwxr-xr-x | security/nss/lib/libpkix/pkix_pl_nss/system/pkix_pl_lifecycle.c | 28 | ||||
-rw-r--r-- | security/nss/lib/nss/nssinit.c | 8 |
5 files changed, 9 insertions, 94 deletions
diff --git a/security/nss/lib/libpkix/include/pkix.h b/security/nss/lib/libpkix/include/pkix.h index 5a0e20e8b..bae5daf70 100755 --- a/security/nss/lib/libpkix/include/pkix.h +++ b/security/nss/lib/libpkix/include/pkix.h @@ -171,34 +171,6 @@ PKIX_Error * PKIX_Shutdown(void *plContext); /* - * FUNCTION: PKIX_Initialize_SetConfigDir - * DESCRIPTION: - * - * This function initializes the configuration directory for "storeType" to - * the ascii value of "configDirString". - * - * PARAMETERS: - * "storeType" - * Type of the Cert Store location for initialization. - * "configDir" - * Address of char where the Cert Store location is retrieved. - * Must be non-NULL. - * "plContext" - * Platform-specific context pointer. - * THREAD SAFETY: - * Not Thread Safe - * RETURNS: - * Returns NULL if the function succeeds. - * Returns an Initialize Error if the function fails in a non-fatal way. - * Returns a Fatal Error if the function fails in an unrecoverable way. - */ -PKIX_Error * -PKIX_Initialize_SetConfigDir( - PKIX_UInt32 storeType, - char *configDir, - void *plContext); - -/* * FUNCTION: PKIX_ValidateChain * DESCRIPTION: * diff --git a/security/nss/lib/libpkix/include/pkix_pl_system.h b/security/nss/lib/libpkix/include/pkix_pl_system.h index 7c3faca39..e43c31225 100755 --- a/security/nss/lib/libpkix/include/pkix_pl_system.h +++ b/security/nss/lib/libpkix/include/pkix_pl_system.h @@ -153,9 +153,7 @@ PKIX_PL_Initialize( * Returns a Fatal Error if the function fails in an unrecoverable way. */ PKIX_Error * -PKIX_PL_Shutdown( - PKIX_Boolean platformInitNeeded, - void *plContext); +PKIX_PL_Shutdown(void *plContext); /* standard memory management operations (not reference-counted) */ diff --git a/security/nss/lib/libpkix/pkix/top/pkix_lifecycle.c b/security/nss/lib/libpkix/pkix/top/pkix_lifecycle.c index c6ff8dbe0..e80016f3f 100755 --- a/security/nss/lib/libpkix/pkix/top/pkix_lifecycle.c +++ b/security/nss/lib/libpkix/pkix/top/pkix_lifecycle.c @@ -44,9 +44,7 @@ #include "pkix_lifecycle.h" static PKIX_Boolean pkixIsInitialized = PKIX_FALSE; -static PKIX_Boolean pkixPlatformInit = PKIX_FALSE; static PKIX_Boolean pkixInitInProgress = PKIX_FALSE; -char *pkix_PK11ConfigDir = NULL; /* Lock used by Logger - is reentrant by the same thread */ extern PKIX_PL_MonitorLock *pkixLoggerLock; @@ -122,7 +120,6 @@ PKIX_Initialize( } pkixInitInProgress = PKIX_TRUE; - pkixPlatformInit = platformInitNeeded; /* remember this for shutdown */ PKIX_CHECK(PKIX_PL_Initialize (platformInitNeeded, useArenas, &plContext), @@ -143,7 +140,6 @@ PKIX_Initialize( pkixInitInProgress = PKIX_FALSE; pkixIsInitialized = PKIX_TRUE; - pkix_PK11ConfigDir = NULL; /* Create Cache Tables */ PKIX_CHECK(PKIX_PL_HashTable_Create @@ -186,35 +182,6 @@ cleanup: } /* - * FUNCTION: PKIX_Initialize_SetConfigDir (see comments in pkix.h) - */ -PKIX_Error * -PKIX_Initialize_SetConfigDir( - PKIX_UInt32 storeType, - char *configDir, - void *plContext) -{ - PKIX_ENTER(LIFECYCLE, "PKIX_Initialize_SetConfigDir"); - PKIX_NULLCHECK_ONE(configDir); - - switch(storeType) { - - case PKIX_STORE_TYPE_PK11: - - pkix_PK11ConfigDir = configDir; - break; - - default: - PKIX_ERROR(PKIX_INVALIDSTORETYPEFORSETTINGCONFIGDIR); - break; - } - -cleanup: - - PKIX_RETURN(LIFECYCLE); -} - -/* * FUNCTION: PKIX_Shutdown (see comments in pkix.h) */ PKIX_Error * @@ -252,7 +219,7 @@ PKIX_Shutdown(void *plContext) PKIX_DECREF(aiaConnectionCache); PKIX_DECREF(httpSocketCache); - PKIX_CHECK(PKIX_PL_Shutdown(pkixPlatformInit, plContext), + PKIX_CHECK(PKIX_PL_Shutdown(plContext), PKIX_SHUTDOWNFAILED); pkixIsInitialized = PKIX_FALSE; diff --git a/security/nss/lib/libpkix/pkix_pl_nss/system/pkix_pl_lifecycle.c b/security/nss/lib/libpkix/pkix_pl_nss/system/pkix_pl_lifecycle.c index 55712a841..e5c7791d7 100755 --- a/security/nss/lib/libpkix/pkix_pl_nss/system/pkix_pl_lifecycle.c +++ b/security/nss/lib/libpkix/pkix_pl_nss/system/pkix_pl_lifecycle.c @@ -43,7 +43,6 @@ #include "pkix_pl_lifecycle.h" -extern char *pkix_PK11ConfigDir; PKIX_Boolean pkix_pl_initialized = PKIX_FALSE; pkix_ClassTable_Entry systemClasses[PKIX_NUMTYPES]; PRLock *classTableLock; @@ -112,24 +111,6 @@ PKIX_PL_Initialize( if (pkix_pl_initialized) return (PKIX_ALLOC_ERROR()); - if (platformInitNeeded) { - - /* Initialize NSPR and NSS. */ - PR_Init(PR_SYSTEM_THREAD, PR_PRIORITY_NORMAL, 1); - - /* if using databases, use NSS_Init and not NSS_NoDB_Init */ - if (pkix_PK11ConfigDir) { - if (NSS_Init(pkix_PK11ConfigDir) != SECSuccess) { - return (PKIX_ALLOC_ERROR()); - } - } else { - if (NSS_NoDB_Init(NULL) != 0){ - return (PKIX_ALLOC_ERROR()); - } - } - } - - PKIX_OBJECT_DEBUG("\tCalling PR_NewLock).\n"); classTableLock = PR_NewLock(); if (classTableLock == NULL) return (PKIX_ALLOC_ERROR()); @@ -235,9 +216,7 @@ cleanup: * PKIX_PL_Shutdown (see comments in pkix_pl_system.h) */ PKIX_Error * -PKIX_PL_Shutdown( - PKIX_Boolean platformInitNeeded, - void *plContext) +PKIX_PL_Shutdown(void *plContext) { PKIX_ENTER(OBJECT, "PKIX_PL_Shutdown"); @@ -247,11 +226,6 @@ PKIX_PL_Shutdown( PKIX_PL_NssContext_Destroy(plContext); } - /* Shut down NSS only if we initialized it */ - if (platformInitNeeded) { - NSS_Shutdown(); - } - pkix_pl_initialized = PKIX_FALSE; PKIX_RETURN(OBJECT); diff --git a/security/nss/lib/nss/nssinit.c b/security/nss/lib/nss/nssinit.c index 04238c9c7..a686f7ec6 100644 --- a/security/nss/lib/nss/nssinit.c +++ b/security/nss/lib/nss/nssinit.c @@ -811,7 +811,13 @@ NSS_Shutdown(void) } ShutdownCRLCache(); OCSP_ShutdownCache(); + +/* ifdef PKIX_Shutdown until bug 391815(undetected leaks by NSS leak testing) + * is fixed */ +#ifdef BUILD_LIBPKIX_TESTS PKIX_Shutdown(plContext); +#endif /* BUILD_LIBPKIX_TESTS */ + SECOID_Shutdown(); status = STAN_Shutdown(); cert_DestroySubjectKeyIDHashTable(); @@ -892,5 +898,3 @@ NSS_VersionCheck(const char *importedVersion) } return PR_TRUE; } - - |