1 From 47852d453f3119c4232a75a81c61a1af57aa6381 Mon Sep 17 00:00:00 2001
2 From: Nick Bowler <nbowler@draconx.ca>
3 Date: Thu, 8 Sep 2022 16:35:03 -0400
4 Subject: [PATCH 1/3] Adapt for Credentials API changes in Samba.
7 configure.ac | 39 +++++++++++++++++++++++++++++++++++++++
8 libmapi/IProfAdmin.c | 11 +++++++++++
9 2 files changed, 50 insertions(+)
11 diff --git a/configure.ac b/configure.ac
12 index 97e1d35..65793e9 100644
15 @@ -473,6 +473,45 @@ DCERPC_SERVER_MODULESDIR=`$PKG_CONFIG --variable=modulesdir dcerpc_server`
16 AC_SUBST(DCERPC_SERVER_MODULESDIR)
17 AC_MSG_RESULT($DCERPC_SERVER_MODULESDIR)
19 +# Probe for samba credentials.h incompatible change
21 +AC_CACHE_CHECK([whether Samba defines CRED_USE_KERBEROS_xxx],
22 +[oc_cv_samba_cred_use_kerberos],
23 +[oc_save_CFLAGS=$CFLAGS
24 +CFLAGS="$CFLAGS $SAMBA_CFLAGS"
25 +AC_COMPUTE_INT([val],
26 + [CRED_USE_KERBEROS_DISABLED | CRED_USE_KERBEROS_DESIRED | CRED_USE_KERBEROS_REQUIRED],
27 + [#include <credentials.h>],
30 + [0], [oc_cv_samba_cred_use_kerberos=no],
31 + [oc_cv_samba_cred_use_kerberos=yes])
32 +CFLAGS=$oc_save_CFLAGS])
34 +AS_CASE([$oc_cv_samba_cred_use_kerberos],
35 + [yes], [AC_DEFINE([SAMBA_CRED_USE_KERBEROS], [1],
36 + [Define to 1 if Samba provides new-style CRED_USE_KERBEROS constants])])
38 +AC_CACHE_CHECK([for Samba cli_credentials_set_kerberos_state],
39 +[oc_cv_samba_cli_credentials_flavour],
40 +[oc_cv_samba_cli_credentials_flavour=no
41 +oc_save_CFLAGS=$CFLAGS oc_save_LIBS=$LIBS
42 +CFLAGS="$CFLAGS $SAMBA_CFLAGS"
43 +LIBS="$LIBS $SAMBA_LIBS"
45 + [AC_LANG_PROGRAM([#include <credentials.h>],
46 + [return cli_credentials_set_kerberos_state(0, 0, 0)])],
47 + [oc_cv_samba_cli_credentials_flavour="3-arg (new-style)"],
49 + [AC_LANG_PROGRAM([#include <credentials.h>],
50 + [return cli_credentials_set_kerberos_state(0, 0)])],
51 + [oc_cv_samba_cli_credentials_flavour="2-arg (old-style)"])])
52 +CFLAGS=$oc_save_CFLAGS LIBS=$oc_save_LIBS])
54 +AS_CASE([$oc_cv_samba_cli_credentials_flavour],
55 + [*new*], [AC_DEFINE([SAMBA_CRED_NEW_STYLE_SET_STATE], [1],
56 + [Define to 1 if Samba cli_credentials_set_kerberos_state take 3 arguments])])
58 dnl ---------------------------------------------------------------------------
59 dnl Finally add libmapi to the library list
60 dnl ---------------------------------------------------------------------------
61 diff --git a/libmapi/IProfAdmin.c b/libmapi/IProfAdmin.c
62 index 6b853a9..a0c02d9 100644
63 --- a/libmapi/IProfAdmin.c
64 +++ b/libmapi/IProfAdmin.c
66 #include <ldb_errors.h>
69 +#if SAMBA_CRED_USE_KERBEROS
70 +# define CRED_AUTO_USE_KERBEROS CRED_USE_KERBEROS_DESIRED
71 +# define CRED_DONT_USE_KERBEROS CRED_USE_KERBEROS_DISABLED
72 +# define CRED_MUST_USE_KERBEROS CRED_USE_KERBEROS_REQUIRED
75 +#if SAMBA_CRED_NEW_STYLE_SET_STATE
76 +#define cli_credentials_set_kerberos_state(a, b) \
77 + cli_credentials_set_kerberos_state(a, b, CRED_SPECIFIED)