RHEL Engineering is moving the tracking of its product development work on RHEL 6 through RHEL 9 to Red Hat Jira (issues.redhat.com). If you're a Red Hat customer, please continue to file support cases via the Red Hat customer portal. If you're not, please head to the "RHEL project" in Red Hat Jira and file new tickets here. Individual Bugzilla bugs in the statuses "NEW", "ASSIGNED", and "POST" are being migrated throughout September 2023. Bugs of Red Hat partners with an assigned Engineering Partner Manager (EPM) are migrated in late September as per pre-agreed dates. Bugs against components "kernel", "kernel-rt", and "kpatch" are only migrated if still in "NEW" or "ASSIGNED". If you cannot log in to RH Jira, please consult article #7032570. That failing, please send an e-mail to the RH Jira admins at rh-issues@redhat.com to troubleshoot your issue as a user management inquiry. The email creates a ServiceNow ticket with Red Hat. Individual Bugzilla bugs that are migrated will be moved to status "CLOSED", resolution "MIGRATED", and set with "MigratedToJIRA" in "Keywords". The link to the successor Jira issue will be found under "Links", have a little "two-footprint" icon next to it, and direct you to the "RHEL project" in Red Hat Jira (issue links are of type "https://issues.redhat.com/browse/RHEL-XXXX", where "X" is a digit). This same link will be available in a blue banner at the top of the page informing you that that bug has been migrated.
Bug 1071520 - openldap does not re-register nss shutdown callbacks after nss_Shutdown is called
Summary: openldap does not re-register nss shutdown callbacks after nss_Shutdown is ca...
Alias: None
Product: Red Hat Enterprise Linux 6
Classification: Red Hat
Component: openldap
Version: 6.5
Hardware: Unspecified
OS: Unspecified
Target Milestone: rc
: ---
Assignee: Matus Honek
QA Contact: Stefan Kremen
Depends On:
Blocks: 1405354 1520990
TreeView+ depends on / blocked
Reported: 2014-03-01 08:43 UTC by Daniel Sands
Modified: 2017-12-05 15:20 UTC (History)
6 users (show)

Fixed In Version: openldap-2.4.40-16.el6
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
: 1405354 (view as bug list)
Last Closed: 2017-03-21 10:18:25 UTC
Target Upstream Version:

Attachments (Terms of Use)
Sample code to demonstrate the problem (3.80 KB, text/plain)
2014-06-25 23:12 UTC, Daniel Sands
no flags Details

System ID Private Priority Status Summary Last Updated
OpenLDAP ITS 8484 0 None None None 2016-12-01 14:51:21 UTC
Red Hat Product Errata RHBA-2017:0664 0 normal SHIPPED_LIVE openldap bug fix update 2017-03-21 12:34:41 UTC

Description Daniel Sands 2014-03-01 08:43:49 UTC
Description of problem:
If using a custom SSL context through the LDAP_OPT_X_TLS_NEWCTX LDAP option, openldap will call nss_ShutdownContext on each unbind.  When the last connection is unbound, NSS will call nss_Shutdown to unload the entire NSS library.  Once this happens, if using PEM files, the next unbind will result in SEC_BUSY with the following text:  TLS: could not shutdown NSS - error -8053:NSS could not shutdown. Objects are still in use..

This happens because the tlsm_nss_shutdown_cb is only registered once, and nss_Shutdown will unregister it.  tlsm_nss_shutdown_cb is responsible for unloading the nss PEM module.  Since the shutdown function is no longer called, the PEM module is still loaded, and the NSS module refuses to shut down correctly.  Eventually this causes many other strange issues such as complaints that no slots are available for the certificates that it reads.

Version-Release number of selected component (if applicable):

How reproducible:

Steps to Reproduce:
1. Create a LDAPS connection using a custom context by calling ldap_set_option with LDAP_OPT_X_TLS_NEWCTX.  This also requires manually setting the LDAP_OPT_X_TLS_CACERTDIR or LDAP_OPT_X_TLS_CACERTFILE, LDAP_OPT_X_TLS_CERTFILE, and LDAP_OPT_X_TLS_KEYFILE, as a minimum.
2. Bind to an LDAPS server, then unbind
3. Bind again, then unbind.

Actual results:
TLS: could not shutdown NSS - error -8053:NSS could not shutdown. Objects are still in use..  and other strange behavior

Expected results:
Continued operation in binding and unbinding.

Comment 2 Jan Synacek 2014-05-14 09:35:44 UTC
Would you mind sharing a reproducer?

Comment 4 Daniel Sands 2014-06-25 23:12:53 UTC
Created attachment 912287 [details]
Sample code to demonstrate the problem

This code loops multiple times through initialize, bind, and unbind, using a LDAPS server as the target.  Oddly enough, the error only appears on the 3rd trip through the loop.

Compile with:

cc -g -o ldapbug ldapbug.c -lldap

Then run:

./ldapbug ldaps://my.ldaps.server

It uses EXTERNAL SSL auth, so LDAP_TLSCERT and LDAP_TLSKEY will need to be set to usable client certificates if not already set in ~/.ldaprc

Comment 12 errata-xmlrpc 2017-03-21 10:18:25 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.


Note You need to log in before you can comment on or make changes to this bug.