b944bc0
The non-reentrant gethostbyXXXX() functions deadlock if called recursively, for
b944bc0
example if libldap needs to be initialized from within gethostbyXXXX() (which
b944bc0
actually happens if nss_ldap is used for hostname resolution and earlier
b944bc0
modules can't resolve the local host name), so use the reentrant versions of
Jan Vcelak 95d8d32
the functions, even if we're not being compiled for use in libldap_r
Jan Vcelak 95d8d32
Jan Vcelak 95d8d32
Resolves: #179730
Jan Vcelak 95d8d32
Author: Jeffery Layton <jlayton@redhat.com>
Jan Vcelak 95d8d32
705b2a5
diff --git a/libraries/libldap/util-int.c b/libraries/libldap/util-int.c
004e302
index aa69f70..4461bf2 100644
705b2a5
--- a/libraries/libldap/util-int.c
705b2a5
+++ b/libraries/libldap/util-int.c
2ba8459
@@ -52,8 +52,8 @@ extern int h_errno;
b944bc0
 #ifndef LDAP_R_COMPILE
b944bc0
 # undef HAVE_REENTRANT_FUNCTIONS
b944bc0
 # undef HAVE_CTIME_R
b944bc0
-# undef HAVE_GETHOSTBYNAME_R
b944bc0
-# undef HAVE_GETHOSTBYADDR_R
b944bc0
+/* # undef HAVE_GETHOSTBYNAME_R */
b944bc0
+/* # undef HAVE_GETHOSTBYADDR_R */
b944bc0
 
b944bc0
 #else
b944bc0
 # include <ldap_pvt_thread.h>
004e302
@@ -442,7 +442,7 @@ ldap_pvt_csnstr(char *buf, size_t len, unsigned int replica, unsigned int mod)
b944bc0
 #define BUFSTART (1024-32)
b944bc0
 #define BUFMAX (32*1024-32)
b944bc0
 
b944bc0
-#if defined(LDAP_R_COMPILE)
b944bc0
+#if defined(LDAP_R_COMPILE) || defined(HAVE_GETHOSTBYNAME_R) && defined(HAVE_GETHOSTBYADDR_R)
b944bc0
 static char *safe_realloc( char **buf, int len );
b944bc0
 
b944bc0
 #if !(defined(HAVE_GETHOSTBYNAME_R) && defined(HAVE_GETHOSTBYADDR_R))