summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGerald Carter <jerry@samba.org>2005-11-22 17:15:28 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 11:05:31 -0500
commitac331c48db29afeb712bb1a1edf739354082ad7f (patch)
treeae2b7160314c184b0a4f832000eb33f1d9525bcf
parent056f06915e9c667393046a674581754d8a581d29 (diff)
downloadsamba-ac331c48db29afeb712bb1a1edf739354082ad7f.tar.gz
samba-ac331c48db29afeb712bb1a1edf739354082ad7f.tar.bz2
samba-ac331c48db29afeb712bb1a1edf739354082ad7f.zip
r11863: BUG 3196: patch from Alex Deiter <tiamat@komi.mts.ru> to compile against the Sun LDAP client libs. But not for AD support; just ldap support
(This used to be commit a33e78acedb37df47905d326411e017794721250)
-rw-r--r--source3/configure.in36
-rw-r--r--source3/include/includes.h9
-rw-r--r--source3/libads/ldap.c8
-rw-r--r--source3/passdb/pdb_nds.c5
4 files changed, 52 insertions, 6 deletions
diff --git a/source3/configure.in b/source3/configure.in
index f31f26f07b..296673e4b5 100644
--- a/source3/configure.in
+++ b/source3/configure.in
@@ -2796,8 +2796,6 @@ if test x"$with_ldap_support" != x"no"; then
# now see if we can find the ldap libs in standard paths
AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
- AC_CHECK_FUNC_EXT(ldap_domain2hostlist,$LDAP_LIBS)
-
########################################################
# If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
# Check found in pam_ldap 145.
@@ -2816,9 +2814,7 @@ if test x"$with_ldap_support" != x"no"; then
AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
- AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
-
- if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes" -a x"$ac_cv_func_ext_ldap_domain2hostlist" = x"yes"; then
+ if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then
AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
@@ -2870,6 +2866,36 @@ if test x"$with_ldap_support" != x"yes"; then
with_ads_support=no
fi
+AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
+
+if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
+ if test x"$with_ads_support" = x"yes"; then
+ AC_MSG_ERROR(Active Directory Support requires ldap_initialize)
+ fi
+ AC_MSG_WARN(Active Directory Support requires ldap_initialize)
+ with_ads_support=no
+fi
+
+AC_CHECK_FUNC_EXT(ldap_domain2hostlist,$LDAP_LIBS)
+
+if test x"$ac_cv_func_ext_ldap_domain2hostlist" != x"yes"; then
+ if test x"$with_ads_support" = x"yes"; then
+ AC_MSG_ERROR(Active Directory Support requires ldap_domain2hostlist)
+ fi
+ AC_MSG_WARN(Active Directory Support requires ldap_domain2hostlist)
+ with_ads_support=no
+fi
+
+AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS)
+
+if test x"$ac_cv_func_ext_ldap_add_result_entry" != x"yes"; then
+ if test x"$with_ads_support" = x"yes"; then
+ AC_MSG_ERROR(Active Directory Support requires ldap_add_result_entry)
+ fi
+ AC_MSG_WARN(Active Directory Support requires ldap_add_result_entry)
+ with_ads_support=no
+fi
+
if test x"$with_ads_support" != x"no"; then
# Do no harm to the values of CFLAGS and LIBS while testing for
diff --git a/source3/include/includes.h b/source3/include/includes.h
index 626124523e..cde199eed8 100644
--- a/source3/include/includes.h
+++ b/source3/include/includes.h
@@ -458,10 +458,19 @@
#if HAVE_LBER_H
#include <lber.h>
+#ifndef LBER_USE_DER
+#define LBER_USE_DER 0x01
+#endif
#endif
#if HAVE_LDAP_H
#include <ldap.h>
+#ifndef LDAP_CONST
+#define LDAP_CONST const
+#endif
+#ifndef LDAP_OPT_SUCCESS
+#define LDAP_OPT_SUCCESS 0
+#endif
#else
#undef HAVE_LDAP
#endif
diff --git a/source3/libads/ldap.c b/source3/libads/ldap.c
index bf402b3499..6d1ca24537 100644
--- a/source3/libads/ldap.c
+++ b/source3/libads/ldap.c
@@ -577,8 +577,10 @@ ADS_STATUS ads_do_search_all(ADS_STRUCT *ads, const char *bind_path,
status = ads_do_paged_search(ads, bind_path, scope, expr, attrs, res,
&count, &cookie);
- if (!ADS_ERR_OK(status)) return status;
+ if (!ADS_ERR_OK(status))
+ return status;
+#ifdef HAVE_LDAP_ADD_RESULT_ENTRY
while (cookie) {
void *res2 = NULL;
ADS_STATUS status2;
@@ -598,6 +600,10 @@ ADS_STATUS ads_do_search_all(ADS_STRUCT *ads, const char *bind_path,
/* note that we do not free res2, as the memory is now
part of the main returned list */
}
+#else
+ DEBUG(0, ("no ldap_add_result_entry() support in LDAP libs!\n"));
+ status = ADS_ERROR_NT(NT_STATUS_UNSUCCESSFUL);
+#endif
return status;
}
diff --git a/source3/passdb/pdb_nds.c b/source3/passdb/pdb_nds.c
index 5de80a827f..1385583086 100644
--- a/source3/passdb/pdb_nds.c
+++ b/source3/passdb/pdb_nds.c
@@ -846,12 +846,17 @@ static NTSTATUS pdb_nds_update_login_attempts(struct pdb_methods *methods,
/* Turn on ssl if required */
if(strequal(protocol, "ldaps")) {
+#ifdef LDAP_OPT_X_TLS
int tls = LDAP_OPT_X_TLS_HARD;
if (ldap_set_option (ld, LDAP_OPT_X_TLS, &tls) != LDAP_SUCCESS) {
DEBUG(1, ("pdb_nds_update_login_attempts: Failed to setup a TLS session\n"));
} else {
DEBUG(4, ("pdb_nds_update_login_attempts: Activated TLS on session\n"));
}
+#else
+ DEBUG(0,("pdb_nds_update_login_attempts: Secure connection not supported by LDAP client libraries!\n"));
+ return NT_STATUS_INVALID_PARAMETER;
+#endif
}
}