|
Matúš Honěk |
9e4e33d |
NSS: re-register NSS_Shutdown callback
|
|
Matúš Honěk |
9e4e33d |
|
|
Matúš Honěk |
9e4e33d |
Original upstream comment:
|
|
Matúš Honěk |
9e4e33d |
"""
|
|
Matúš Honěk |
9e4e33d |
When there's a persistent daemon for auth and it sets LDAP_OPT_X_TLS_NEWCTX, it
|
|
Matúš Honěk |
9e4e33d |
fails to auth at third login.
|
|
Matúš Honěk |
9e4e33d |
|
|
Matúš Honěk |
9e4e33d |
1. everything is good and destroyed after use but
|
|
Matúš Honěk |
9e4e33d |
tlsm_register_shutdown_callonce.initialized=1.
|
|
Matúš Honěk |
9e4e33d |
2. still good but because tlsm_register_shutdown_callonce.initialized==1, it
|
|
Matúš Honěk |
9e4e33d |
fails to register shutdown function.
|
|
Matúš Honěk |
9e4e33d |
so pem_module is not destroyed at the end.
|
|
Matúš Honěk |
9e4e33d |
3. pem_module is not NULL so it's not initialized again and not added to modules
|
|
Matúš Honěk |
9e4e33d |
list. And Login fails.
|
|
Matúš Honěk |
9e4e33d |
"""
|
|
Matúš Honěk |
9e4e33d |
|
|
Matúš Honěk |
9e4e33d |
Sent-By: soohoon.lee@f5.com
|
|
Matúš Honěk |
9e4e33d |
Original-Name: soohoon-lee-160823.patch
|
|
Matúš Honěk |
9e4e33d |
Upstream-ITS: 8484
|
|
Matúš Honěk |
9e4e33d |
|
|
Matúš Honěk |
9e4e33d |
diff --git a/libraries/libldap/tls_m.c b/libraries/libldap/tls_m.c
|
|
Matúš Honěk |
9e4e33d |
index cdf7f8e..cf05914 100644
|
|
Matúš Honěk |
9e4e33d |
--- a/libraries/libldap/tls_m.c
|
|
Matúš Honěk |
9e4e33d |
+++ b/libraries/libldap/tls_m.c
|
|
Matúš Honěk |
9e4e33d |
@@ -1145,6 +1145,8 @@ tlsm_auth_cert_handler(void *arg, PRFileDesc *fd,
|
|
Matúš Honěk |
9e4e33d |
return ret;
|
|
Matúš Honěk |
9e4e33d |
}
|
|
Matúš Honěk |
9e4e33d |
|
|
Matúš Honěk |
9e4e33d |
+static PRCallOnceType tlsm_register_shutdown_callonce = {0,0};
|
|
Matúš Honěk |
9e4e33d |
+
|
|
Matúš Honěk |
9e4e33d |
static SECStatus
|
|
Matúš Honěk |
9e4e33d |
tlsm_nss_shutdown_cb( void *appData, void *nssData )
|
|
Matúš Honěk |
9e4e33d |
{
|
|
Matúš Honěk |
9e4e33d |
@@ -1157,10 +1159,15 @@ tlsm_nss_shutdown_cb( void *appData, void *nssData )
|
|
Matúš Honěk |
9e4e33d |
SECMOD_DestroyModule( pem_module );
|
|
Matúš Honěk |
9e4e33d |
pem_module = NULL;
|
|
Matúš Honěk |
9e4e33d |
}
|
|
Matúš Honěk |
9e4e33d |
+
|
|
Matúš Honěk |
9e4e33d |
+ /* init callonce so it can be armed again for cases like persistent daemon with LDAP_OPT_X_TLS_NEWCTX */
|
|
Matúš Honěk |
9e4e33d |
+ tlsm_register_shutdown_callonce.initialized = 0;
|
|
Matúš Honěk |
9e4e33d |
+ tlsm_register_shutdown_callonce.inProgress = 0;
|
|
Matúš Honěk |
9e4e33d |
+ tlsm_register_shutdown_callonce.status = 0;
|
|
Matúš Honěk |
9e4e33d |
+
|
|
Matúš Honěk |
9e4e33d |
return rc;
|
|
Matúš Honěk |
9e4e33d |
}
|
|
Matúš Honěk |
9e4e33d |
|
|
Matúš Honěk |
9e4e33d |
-static PRCallOnceType tlsm_register_shutdown_callonce = {0,0};
|
|
Matúš Honěk |
9e4e33d |
static PRStatus PR_CALLBACK
|
|
Matúš Honěk |
9e4e33d |
tlsm_register_nss_shutdown_cb( void )
|
|
Matúš Honěk |
9e4e33d |
{
|