From c129744fc253e703ac0c8f4b2a02e5671af2ec38 Mon Sep 17 00:00:00 2001
From: Quanah Gibson-Mount <quanah@openldap.org>
Date: Thu, 5 Mar 2009 19:09:41 +0000
Subject: [PATCH] Don't call NSS_Shutdown if someone else init'd the library

---
 libraries/libldap/tls_m.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/libraries/libldap/tls_m.c b/libraries/libldap/tls_m.c
index 93ab4ae0c6..bd9fdcdc44 100644
--- a/libraries/libldap/tls_m.c
+++ b/libraries/libldap/tls_m.c
@@ -61,6 +61,8 @@ static const PRIOMethods tlsm_PR_methods;
 
 extern tls_impl ldap_int_tls_impl;
 
+static int tslm_did_init;
+
 #ifdef LDAP_R_COMPILE
 
 static void
@@ -81,6 +83,8 @@ tlsm_init( void )
 	tlsm_layer_id = PR_GetUniqueIdentity("OpenLDAP");
 
 	if ( !NSS_IsInitialized() ) {
+		tlsm_did_init = 1;
+
 		NSS_NoDB_Init("");
 
 		NSS_SetDomesticPolicy();
@@ -97,7 +101,12 @@ tlsm_init( void )
 static void
 tlsm_destroy( void )
 {
-	NSS_Shutdown();
+	/* Only if we did the actual initialization */
+	if ( tlsm_did_init ) {
+		tlsm_did_init = 0;
+
+		NSS_Shutdown();
+	}
 
 	PR_Cleanup();
 }
-- 
GitLab