diff -ur samba-3.0.21pre1/source/configure.in samba-3.0.21pre1-sun-ldap/source/configure.in --- samba-3.0.21pre1/source/configure.in Tue Oct 18 23:36:52 2005 +++ samba-3.0.21pre1-sun-ldap/source/configure.in Thu Oct 20 20:40:36 2005 @@ -2796,8 +2796,6 @@ # 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 @@ 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"; @@ -2869,6 +2865,36 @@ fi 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 diff -ur samba-3.0.21pre1/source/include/config.h.in samba-3.0.21pre1-sun-ldap/source/include/config.h.in --- samba-3.0.21pre1/source/include/config.h.in Tue Oct 18 23:37:56 2005 +++ samba-3.0.21pre1-sun-ldap/source/include/config.h.in Thu Oct 20 20:56:24 2005 @@ -719,6 +719,9 @@ /* Whether ldap is available */ #undef HAVE_LDAP +/* Define to 1 if you have the `ldap_add_result_entry' function. */ +#undef HAVE_LDAP_ADD_RESULT_ENTRY + /* Define to 1 if you have the `ldap_domain2hostlist' function. */ #undef HAVE_LDAP_DOMAIN2HOSTLIST diff -ur samba-3.0.21pre1/source/include/includes.h samba-3.0.21pre1-sun-ldap/source/include/includes.h --- samba-3.0.21pre1/source/include/includes.h Tue Oct 18 06:45:05 2005 +++ samba-3.0.21pre1-sun-ldap/source/include/includes.h Thu Oct 20 20:41:56 2005 @@ -458,10 +458,19 @@ #if HAVE_LBER_H #include +#ifndef LBER_USE_DER +#define LBER_USE_DER 0x01 #endif +#endif #if HAVE_LDAP_H #include +#ifndef LDAP_CONST +#define LDAP_CONST const +#endif +#ifndef LDAP_OPT_SUCCESS +#define LDAP_OPT_SUCCESS 0 +#endif #else #undef HAVE_LDAP #endif diff -ur samba-3.0.21pre1/source/libads/ldap.c samba-3.0.21pre1-sun-ldap/source/libads/ldap.c --- samba-3.0.21pre1/source/libads/ldap.c Tue Oct 18 06:45:05 2005 +++ samba-3.0.21pre1-sun-ldap/source/libads/ldap.c Thu Oct 20 20:46:52 2005 @@ -579,6 +579,7 @@ if (!ADS_ERR_OK(status)) return status; +#ifdef HAVE_LDAP_ADD_RESULT_ENTRY while (cookie) { void *res2 = NULL; ADS_STATUS status2; @@ -598,6 +599,10 @@ /* 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 -ur samba-3.0.21pre1/source/passdb/pdb_ldap.c samba-3.0.21pre1-sun-ldap/source/passdb/pdb_ldap.c --- samba-3.0.21pre1/source/passdb/pdb_ldap.c Tue Oct 18 06:45:02 2005 +++ samba-3.0.21pre1-sun-ldap/source/passdb/pdb_ldap.c Thu Oct 20 20:48:26 2005 @@ -1726,7 +1726,7 @@ if (retdata) ber_bvfree(retdata); if (retoid) - ber_memfree(retoid); + ldap_memfree(retoid); } ber_bvfree(bv); } diff -ur samba-3.0.21pre1/source/passdb/pdb_nds.c samba-3.0.21pre1-sun-ldap/source/passdb/pdb_nds.c --- samba-3.0.21pre1/source/passdb/pdb_nds.c Tue Oct 18 06:45:02 2005 +++ samba-3.0.21pre1-sun-ldap/source/passdb/pdb_nds.c Thu Oct 20 20:51:04 2005 @@ -846,6 +846,7 @@ /* 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")); @@ -852,6 +853,10 @@ } 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 } } diff -ur samba-3.0.21pre1/source/utils/net_lookup.c samba-3.0.21pre1-sun-ldap/source/utils/net_lookup.c --- samba-3.0.21pre1/source/utils/net_lookup.c Mon Apr 18 20:38:21 2005 +++ samba-3.0.21pre1-sun-ldap/source/utils/net_lookup.c Thu Oct 20 20:52:01 2005 @@ -84,7 +84,7 @@ static int net_lookup_ldap(int argc, const char **argv) { -#ifdef HAVE_LDAP +#ifdef HAVE_ADS char *srvlist; const char *domain; int rc; @@ -126,7 +126,7 @@ } return -1; #endif - DEBUG(1,("No LDAP support\n")); + DEBUG(1,("No ADS support\n")); return -1; }