From 3ab6a68e91a4fad5af037a910fd4f6b6d8f7611f Mon Sep 17 00:00:00 2001 From: Alexander Bokovoy Date: Jul 11 2017 13:21:35 +0000 Subject: ipa-sam: use smbldap_set_bind_callback for Samba 4.7 or later Samba 4.7 tightens up smbldap API by making 'struct smbldap_state' an opaque. This means ipa-sam module cannot anymore directly set its LDAP bind callback. Use new smbldap API to set the LDAP bind callback. Fixes https://pagure.io/freeipa/issue/6877 Reviewed-By: Martin Basti --- diff --git a/daemons/ipa-sam/ipa_sam.c b/daemons/ipa-sam/ipa_sam.c index fe9913d..0cd48d8 100644 --- a/daemons/ipa-sam/ipa_sam.c +++ b/daemons/ipa-sam/ipa_sam.c @@ -4532,8 +4532,12 @@ static NTSTATUS pdb_init_ipasam(struct pdb_methods **pdb_method, uri, false, NULL, NULL, &ipasam_state->ldap_state); if (NT_STATUS_IS_OK(status)) { +#ifdef HAVE_SMBLDAP_SET_BIND_CALLBACK + smbldap_set_bind_callback(ipasam_state->ldap_state, bind_callback, ipasam_state); +#else ipasam_state->ldap_state->bind_callback = bind_callback; ipasam_state->ldap_state->bind_callback_data = ipasam_state; +#endif } } diff --git a/server.m4 b/server.m4 index 365abb6..a9670c8 100644 --- a/server.m4 +++ b/server.m4 @@ -111,6 +111,11 @@ AC_CHECK_LIB([smbldap],[smbldap_get_ldap], [AC_MSG_WARN([libsmbldap is not opaque, not using smbldap_get_ldap])], [$SAMBA40EXTRA_LIBPATH]) +AC_CHECK_LIB([smbldap],[smbldap_set_bind_callback], + [AC_DEFINE([HAVE_SMBLDAP_SET_BIND_CALLBACK], [1], [struct smbldap_state is opaque])], + [AC_MSG_WARN([libsmbldap is not opaque, not using smbldap_set_bind_callback])], + [$SAMBA40EXTRA_LIBPATH]) + dnl --------------------------------------------------------------------------- dnl Check for libunistring dnl ---------------------------------------------------------------------------