clikrb5: Prefer krb5_free_keytab_entry_contents to krb5_kt_free_entry.
authorJelmer Vernooij <jelmer@samba.org>
Thu, 4 Jun 2009 21:43:31 +0000 (23:43 +0200)
committerStefan Metzmacher <metze@samba.org>
Wed, 3 Mar 2010 11:08:13 +0000 (12:08 +0100)
Both functions exist in MIT Kerberos >= 1.7, but only
krb5_free_keytab_entry_contents has a prototype.

Part of a fix for bug #6918 (Build breaks with krb5-client-1.7-6.1.i586).
(cherry picked from commit f7f183aba2c53426620bab7e934ce79b516dc4fc)

source/libsmb/clikrb5.c

index 778b023b376e8f85035c2e5aa83d5f128989d047..435246375b8d05160fc34a98520ba7d963d824a1 100644 (file)
@@ -906,10 +906,15 @@ failed:
 
  krb5_error_code smb_krb5_kt_free_entry(krb5_context context, krb5_keytab_entry *kt_entry)
 {
-#if defined(HAVE_KRB5_KT_FREE_ENTRY)
-       return krb5_kt_free_entry(context, kt_entry);
-#elif defined(HAVE_KRB5_FREE_KEYTAB_ENTRY_CONTENTS)
+/* Try krb5_free_keytab_entry_contents first, since
+ * MIT Kerberos >= 1.7 has both krb5_free_keytab_entry_contents and
+ * krb5_kt_free_entry but only has a prototype for the first, while the
+ * second is considered private.
+ */
+#if defined(HAVE_KRB5_FREE_KEYTAB_ENTRY_CONTENTS)
        return krb5_free_keytab_entry_contents(context, kt_entry);
+#elif defined(HAVE_KRB5_KT_FREE_ENTRY)
+       return krb5_kt_free_entry(context, kt_entry);
 #else
 #error UNKNOWN_KT_FREE_FUNCTION
 #endif