Makefile.am | 12 ++++++++----
Makefile.in | 19 ++++++++++++-------
2 files changed, 20 insertions(+), 11 deletions(-)
New commits:
commit 91fa21f6af7871d73bb9d5e738ec4e31b5298463
Author: Rich Megginson <rmeggins(a)redhat.com>
Date: Wed Dec 14 20:04:48 2011 -0700
Bug 755725 - 389 programs linked against openldap crash during shutdown
https://bugzilla.redhat.com/show_bug.cgi?id=755725
Resolves: bug 755725
Bug Description: 389 programs linked against openldap crash during shutdown
Reviewed by: nhosoi (Thanks!)
Branch: master
Fix Description: With recent versions of openldap, you cannot link with both
ldap_r and ldap - when the shared object _fini is run, the _fini from the one
will stomp on the _fini from the other, and the program will crash. The fix
is to link with ldap_r only in a threaded program, and ldap otherwise.
Platforms tested: Fedora 16, RHEL6 x86_64
Flag Day: no
Doc impact: no
diff --git a/Makefile.am b/Makefile.am
index f4af8ed..25ae2e5 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -45,11 +45,15 @@ endif
NSPR_LINK = @nspr_lib@ -lplc4 -lplds4 -lnspr4
NSS_LINK = @nss_lib@ -lssl3 -lnss3
if OPENLDAP
-LDAPSDK_LINK = @openldap_lib@ -lldap_r@ol_libver@ -lldap@ol_libver@ @ldap_lib_ldif@
-llber@ol_libver@
+# with recent versions of openldap - if you link with both ldap_r and ldap, the
+# shared lib _fini for one will stomp on the other, and the program will crash
+LDAPSDK_LINK_NOTHR = @openldap_lib@ -lldap@ol_libver@ @ldap_lib_ldif@ -llber@ol_libver@
+LDAPSDK_LINK = @openldap_lib@ -lldap_r@ol_libver@ @ldap_lib_ldif@ -llber@ol_libver@
ldaplib = openldap
ldaplib_defs = -DUSE_OPENLDAP
else
LDAPSDK_LINK = @ldapsdk_lib@ -lssldap60 -lprldap60 -lldap60 -lldif60
+LDAPSDK_LINK_NOTHR = $(LDAPSDK_LINK)
ldaplib = mozldap
ldaplib_defs =
endif
@@ -1229,7 +1233,7 @@ ldap_agent_bin_SOURCES = ldap/servers/snmp/main.c \
ldap/servers/slapd/agtmmap.c
ldap_agent_bin_CPPFLAGS = $(AM_CPPFLAGS) @netsnmp_inc@ @openldap_inc@ @ldapsdk_inc@
@nss_inc@ @nspr_inc@
-ldap_agent_bin_LDADD = $(LDAPSDK_LINK) $(SASL_LINK) $(NSS_LINK) $(NSPR_LINK)
$(NETSNMP_LINK) $(THREADLIB)
+ldap_agent_bin_LDADD = $(LDAPSDK_LINK_NOTHR) $(SASL_LINK) $(NSS_LINK) $(NSPR_LINK)
$(NETSNMP_LINK) $(THREADLIB)
if SOLARIS
ldap_agent_bin_LDADD += -lrt
endif
@@ -1264,7 +1268,7 @@ ldclt_bin_LDADD = $(NSPR_LINK) $(NSS_LINK) $(LDAPSDK_LINK)
$(SASL_LINK) $(LIBNSL
ldif_bin_SOURCES = ldap/servers/slapd/tools/ldif.c
ldif_bin_CPPFLAGS = $(AM_CPPFLAGS) @openldap_inc@ @ldapsdk_inc@ @nss_inc@ @nspr_inc@
-ldif_bin_LDADD = $(NSPR_LINK) $(NSS_LINK) $(LDAPSDK_LINK) $(SASL_LINK)
+ldif_bin_LDADD = $(NSPR_LINK) $(NSS_LINK) $(LDAPSDK_LINK_NOTHR) $(SASL_LINK)
#------------------------
# migratecred
@@ -1280,7 +1284,7 @@ migratecred_bin_LDADD = libslapd.la $(NSPR_LINK) $(NSS_LINK)
$(SVRCORE_LINK) $(L
mmldif_bin_SOURCES = ldap/servers/slapd/tools/mmldif.c
mmldif_bin_CPPFLAGS = $(AM_CPPFLAGS) @openldap_inc@ @ldapsdk_inc@ @nss_inc@ @nspr_inc@
-mmldif_bin_LDADD = libslapd.la $(NSPR_LINK) $(NSS_LINK) $(SVRCORE_LINK) $(LDAPSDK_LINK)
$(SASL_LINK)
+mmldif_bin_LDADD = libslapd.la $(NSPR_LINK) $(NSS_LINK) $(SVRCORE_LINK)
$(LDAPSDK_LINK_NOTHR) $(SASL_LINK)
#------------------------
# ns-slapd
diff --git a/Makefile.in b/Makefile.in
index bc6a4d5..00b47ce 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -825,7 +825,8 @@ am_ldap_agent_bin_OBJECTS = \
ldap/servers/snmp/ldap_agent_bin-ldap-agent.$(OBJEXT) \
ldap/servers/slapd/ldap_agent_bin-agtmmap.$(OBJEXT)
ldap_agent_bin_OBJECTS = $(am_ldap_agent_bin_OBJECTS)
-ldap_agent_bin_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+@OPENLDAP_FALSE@am__DEPENDENCIES_3 = $(am__DEPENDENCIES_1)
+ldap_agent_bin_DEPENDENCIES = $(am__DEPENDENCIES_3) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
@@ -866,7 +867,7 @@ am_ldif_bin_OBJECTS = \
ldap/servers/slapd/tools/ldif_bin-ldif.$(OBJEXT)
ldif_bin_OBJECTS = $(am_ldif_bin_OBJECTS)
ldif_bin_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+ $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_1)
am_makstrdb_OBJECTS = lib/libsi18n/makstrdb-makstrdb.$(OBJEXT)
makstrdb_OBJECTS = $(am_makstrdb_OBJECTS)
makstrdb_LDADD = $(LDADD)
@@ -880,7 +881,7 @@ am_mmldif_bin_OBJECTS = \
mmldif_bin_OBJECTS = $(am_mmldif_bin_OBJECTS)
mmldif_bin_DEPENDENCIES = libslapd.la $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+ $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_1)
am__ns_slapd_SOURCES_DIST = ldap/servers/slapd/abandon.c \
ldap/servers/slapd/auth.c ldap/servers/slapd/bind.c \
ldap/servers/slapd/compare.c ldap/servers/slapd/config.c \
@@ -1322,8 +1323,12 @@ PLUGIN_CPPFLAGS = $(AM_CPPFLAGS) @openldap_inc@ @ldapsdk_inc@
@nss_inc@ @nspr_in
#------------------------
NSPR_LINK = @nspr_lib@ -lplc4 -lplds4 -lnspr4
NSS_LINK = @nss_lib@ -lssl3 -lnss3
+@OPENLDAP_FALSE@LDAPSDK_LINK_NOTHR = $(LDAPSDK_LINK)
+# with recent versions of openldap - if you link with both ldap_r and ldap, the
+# shared lib _fini for one will stomp on the other, and the program will crash
+@OPENLDAP_TRUE@LDAPSDK_LINK_NOTHR = @openldap_lib@ -lldap@ol_libver@ @ldap_lib_ldif@
-llber@ol_libver@
@OPENLDAP_FALSE@LDAPSDK_LINK = @ldapsdk_lib@ -lssldap60 -lprldap60 -lldap60 -lldif60
-@OPENLDAP_TRUE@LDAPSDK_LINK = @openldap_lib@ -lldap_r@ol_libver@ -lldap@ol_libver@
@ldap_lib_ldif@ -llber@ol_libver@
+@OPENLDAP_TRUE@LDAPSDK_LINK = @openldap_lib@ -lldap_r@ol_libver@ @ldap_lib_ldif@
-llber@ol_libver@
@OPENLDAP_FALSE@ldaplib = mozldap
@OPENLDAP_TRUE@ldaplib = openldap
@OPENLDAP_FALSE@ldaplib_defs =
@@ -2368,7 +2373,7 @@ ldap_agent_bin_SOURCES = ldap/servers/snmp/main.c \
ldap/servers/slapd/agtmmap.c
ldap_agent_bin_CPPFLAGS = $(AM_CPPFLAGS) @netsnmp_inc@ @openldap_inc@ @ldapsdk_inc@
@nss_inc@ @nspr_inc@
-ldap_agent_bin_LDADD = $(LDAPSDK_LINK) $(SASL_LINK) $(NSS_LINK) \
+ldap_agent_bin_LDADD = $(LDAPSDK_LINK_NOTHR) $(SASL_LINK) $(NSS_LINK) \
$(NSPR_LINK) $(NETSNMP_LINK) $(THREADLIB) $(am__append_2)
#------------------------
@@ -2394,7 +2399,7 @@ ldclt_bin_LDADD = $(NSPR_LINK) $(NSS_LINK) $(LDAPSDK_LINK)
$(SASL_LINK) $(LIBNSL
#------------------------
ldif_bin_SOURCES = ldap/servers/slapd/tools/ldif.c
ldif_bin_CPPFLAGS = $(AM_CPPFLAGS) @openldap_inc@ @ldapsdk_inc@ @nss_inc@ @nspr_inc@
-ldif_bin_LDADD = $(NSPR_LINK) $(NSS_LINK) $(LDAPSDK_LINK) $(SASL_LINK)
+ldif_bin_LDADD = $(NSPR_LINK) $(NSS_LINK) $(LDAPSDK_LINK_NOTHR) $(SASL_LINK)
#------------------------
# migratecred
@@ -2408,7 +2413,7 @@ migratecred_bin_LDADD = libslapd.la $(NSPR_LINK) $(NSS_LINK)
$(SVRCORE_LINK) $(L
#------------------------
mmldif_bin_SOURCES = ldap/servers/slapd/tools/mmldif.c
mmldif_bin_CPPFLAGS = $(AM_CPPFLAGS) @openldap_inc@ @ldapsdk_inc@ @nss_inc@ @nspr_inc@
-mmldif_bin_LDADD = libslapd.la $(NSPR_LINK) $(NSS_LINK) $(SVRCORE_LINK) $(LDAPSDK_LINK)
$(SASL_LINK)
+mmldif_bin_LDADD = libslapd.la $(NSPR_LINK) $(NSS_LINK) $(SVRCORE_LINK)
$(LDAPSDK_LINK_NOTHR) $(SASL_LINK)
#------------------------
# ns-slapd