summaryrefslogtreecommitdiffstats
path: root/source/libsmb/clikrb5.c
diff options
context:
space:
mode:
Diffstat (limited to 'source/libsmb/clikrb5.c')
-rw-r--r--source/libsmb/clikrb5.c29
1 files changed, 23 insertions, 6 deletions
diff --git a/source/libsmb/clikrb5.c b/source/libsmb/clikrb5.c
index 993e32c1edd..7043a26408c 100644
--- a/source/libsmb/clikrb5.c
+++ b/source/libsmb/clikrb5.c
@@ -1399,9 +1399,14 @@ done:
return ret;
}
-#ifndef HAVE_KRB5_GET_INIT_CREDS_OPT_ALLOC
- krb5_error_code krb5_get_init_creds_opt_alloc(krb5_context context, krb5_get_init_creds_opt **opt)
+ krb5_error_code smb_krb5_get_init_creds_opt_alloc(krb5_context context,
+ krb5_get_init_creds_opt **opt)
{
+#ifdef HAVE_KRB5_GET_INIT_CREDS_OPT_ALLOC
+ /* Heimdal or modern MIT version */
+ return krb5_get_init_creds_opt_alloc(context, opt);
+#else
+ /* Historical MIT version */
krb5_get_init_creds_opt *my_opt;
*opt = NULL;
@@ -1414,16 +1419,28 @@ done:
*opt = my_opt;
return 0;
+#endif /* HAVE_KRB5_GET_INIT_CREDS_OPT_ALLOC */
}
-#endif
-#ifndef HAVE_KRB5_GET_INIT_CREDS_OPT_FREE
- void krb5_get_init_creds_opt_free(krb5_get_init_creds_opt *opt)
+ void smb_krb5_get_init_creds_opt_free(krb5_context context,
+ krb5_get_init_creds_opt *opt)
{
+#ifdef HAVE_KRB5_GET_INIT_CREDS_OPT_FREE
+
+#ifdef KRB5_CREDS_OPT_FREE_REQUIRES_CONTEXT
+ /* Modern MIT version */
+ krb5_get_init_creds_opt_free(context, opt);
+#else
+ /* Heimdal version */
+ krb5_get_init_creds_opt_free(opt);
+#endif
+
+#else /* HAVE_KRB5_GET_INIT_CREDS_OPT_FREE */
+ /* Historical MIT version */
SAFE_FREE(opt);
opt = NULL;
+#endif /* HAVE_KRB5_GET_INIT_CREDS_OPT_FREE */
}
-#endif
krb5_error_code smb_krb5_mk_error(krb5_context context,
krb5_error_code error_code,