summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrelyea%netscape.com <devnull@localhost>2002-04-26 22:36:07 +0000
committerrelyea%netscape.com <devnull@localhost>2002-04-26 22:36:07 +0000
commit519a0dd312c906a64bab5e2381ea88ee7c610d31 (patch)
tree86566535a2d79d86dc77e0320469299c985c3a52
parent077f44587e3c88fe08c481e7113f2c4c8f84c198 (diff)
downloadnss-hg-519a0dd312c906a64bab5e2381ea88ee7c610d31.tar.gz
return error when incomplete shutdown has been detected.
-rw-r--r--security/nss/lib/nss/nss.h2
-rw-r--r--security/nss/lib/nss/nssinit.c7
-rw-r--r--security/nss/lib/pk11wrap/pk11util.c7
-rw-r--r--security/nss/lib/pk11wrap/secmod.h2
4 files changed, 12 insertions, 6 deletions
diff --git a/security/nss/lib/nss/nss.h b/security/nss/lib/nss/nss.h
index aeb07f09b..fa4840e02 100644
--- a/security/nss/lib/nss/nss.h
+++ b/security/nss/lib/nss/nss.h
@@ -132,7 +132,7 @@ SECStatus NSS_NoDB_Init(const char *configdir);
/*
* Close the Cert, Key databases.
*/
-extern void NSS_Shutdown(void);
+extern SECStatus NSS_Shutdown(void);
/*
* set the PKCS #11 strings for the internal token.
diff --git a/security/nss/lib/nss/nssinit.c b/security/nss/lib/nss/nssinit.c
index 7e4a2d4a0..bb24f8b38 100644
--- a/security/nss/lib/nss/nssinit.c
+++ b/security/nss/lib/nss/nssinit.c
@@ -454,13 +454,16 @@ NSS_NoDB_Init(const char * configdir)
PR_TRUE,PR_TRUE,PR_TRUE,PR_TRUE,PR_TRUE);
}
-void
+SECStatus
NSS_Shutdown(void)
{
+ SECStatus rv;
+
SECOID_Shutdown();
STAN_Shutdown();
- SECMOD_Shutdown();
+ rv = SECMOD_Shutdown();
nss_IsInitted = PR_FALSE;
+ return rv;
}
diff --git a/security/nss/lib/pk11wrap/pk11util.c b/security/nss/lib/pk11wrap/pk11util.c
index f7d2405de..989040ed8 100644
--- a/security/nss/lib/pk11wrap/pk11util.c
+++ b/security/nss/lib/pk11wrap/pk11util.c
@@ -55,7 +55,8 @@ extern PK11DefaultArrayEntry PK11_DefaultArray[];
extern int num_pk11_default_mechanisms;
-void SECMOD_Init() {
+void
+SECMOD_Init() {
/* don't initialize twice */
if (moduleLock) return;
@@ -64,7 +65,8 @@ void SECMOD_Init() {
}
-void SECMOD_Shutdown() {
+SECStatus
+SECMOD_Shutdown() {
/* destroy the lock */
if (moduleLock) {
SECMOD_DestroyListLock(moduleLock);
@@ -106,6 +108,7 @@ void SECMOD_Shutdown() {
PORT_Assert(secmod_PrivateModuleCount == 0);
}
#endif
+ return (secmod_PrivateModuleCount == 0) ? SECSuccess : SECFailure;
}
diff --git a/security/nss/lib/pk11wrap/secmod.h b/security/nss/lib/pk11wrap/secmod.h
index 303e3fe58..6e4c4c9b8 100644
--- a/security/nss/lib/pk11wrap/secmod.h
+++ b/security/nss/lib/pk11wrap/secmod.h
@@ -91,7 +91,7 @@ SECStatus SECMOD_UnloadUserModule(SECMODModule *mod);
SECMODModule * SECMOD_CreateModule(char *lib, char *name, char *param,
char *nss);
-extern void SECMOD_Shutdown(void);
+extern SECStatus SECMOD_Shutdown(void);
/* Module Management */