From 47852d453f3119c4232a75a81c61a1af57aa6381 Mon Sep 17 00:00:00 2001 From: Nick Bowler Date: Thu, 8 Sep 2022 16:35:03 -0400 Subject: [PATCH 1/3] Adapt for Credentials API changes in Samba. --- configure.ac | 39 +++++++++++++++++++++++++++++++++++++++ libmapi/IProfAdmin.c | 11 +++++++++++ 2 files changed, 50 insertions(+) diff --git a/configure.ac b/configure.ac index 97e1d35..65793e9 100644 --- a/configure.ac +++ b/configure.ac @@ -473,6 +473,45 @@ DCERPC_SERVER_MODULESDIR=`$PKG_CONFIG --variable=modulesdir dcerpc_server` AC_SUBST(DCERPC_SERVER_MODULESDIR) AC_MSG_RESULT($DCERPC_SERVER_MODULESDIR) +# Probe for samba credentials.h incompatible change + +AC_CACHE_CHECK([whether Samba defines CRED_USE_KERBEROS_xxx], +[oc_cv_samba_cred_use_kerberos], +[oc_save_CFLAGS=$CFLAGS +CFLAGS="$CFLAGS $SAMBA_CFLAGS" +AC_COMPUTE_INT([val], + [CRED_USE_KERBEROS_DISABLED | CRED_USE_KERBEROS_DESIRED | CRED_USE_KERBEROS_REQUIRED], + [#include ], + [val=0]) +AS_CASE([$val], + [0], [oc_cv_samba_cred_use_kerberos=no], + [oc_cv_samba_cred_use_kerberos=yes]) +CFLAGS=$oc_save_CFLAGS]) + +AS_CASE([$oc_cv_samba_cred_use_kerberos], + [yes], [AC_DEFINE([SAMBA_CRED_USE_KERBEROS], [1], + [Define to 1 if Samba provides new-style CRED_USE_KERBEROS constants])]) + +AC_CACHE_CHECK([for Samba cli_credentials_set_kerberos_state], +[oc_cv_samba_cli_credentials_flavour], +[oc_cv_samba_cli_credentials_flavour=no +oc_save_CFLAGS=$CFLAGS oc_save_LIBS=$LIBS +CFLAGS="$CFLAGS $SAMBA_CFLAGS" +LIBS="$LIBS $SAMBA_LIBS" +AC_LINK_IFELSE( + [AC_LANG_PROGRAM([#include ], + [return cli_credentials_set_kerberos_state(0, 0, 0)])], + [oc_cv_samba_cli_credentials_flavour="3-arg (new-style)"], + [AC_LINK_IFELSE( + [AC_LANG_PROGRAM([#include ], + [return cli_credentials_set_kerberos_state(0, 0)])], + [oc_cv_samba_cli_credentials_flavour="2-arg (old-style)"])]) +CFLAGS=$oc_save_CFLAGS LIBS=$oc_save_LIBS]) + +AS_CASE([$oc_cv_samba_cli_credentials_flavour], + [*new*], [AC_DEFINE([SAMBA_CRED_NEW_STYLE_SET_STATE], [1], + [Define to 1 if Samba cli_credentials_set_kerberos_state take 3 arguments])]) + dnl --------------------------------------------------------------------------- dnl Finally add libmapi to the library list dnl --------------------------------------------------------------------------- diff --git a/libmapi/IProfAdmin.c b/libmapi/IProfAdmin.c index 6b853a9..a0c02d9 100644 --- a/libmapi/IProfAdmin.c +++ b/libmapi/IProfAdmin.c @@ -24,6 +24,17 @@ #include #include +#if SAMBA_CRED_USE_KERBEROS +# define CRED_AUTO_USE_KERBEROS CRED_USE_KERBEROS_DESIRED +# define CRED_DONT_USE_KERBEROS CRED_USE_KERBEROS_DISABLED +# define CRED_MUST_USE_KERBEROS CRED_USE_KERBEROS_REQUIRED +#endif + +#if SAMBA_CRED_NEW_STYLE_SET_STATE +#define cli_credentials_set_kerberos_state(a, b) \ + cli_credentials_set_kerberos_state(a, b, CRED_SPECIFIED) +#endif + /** \file IProfAdmin.c -- 2.35.1