]> eyrie.org Git - kerberos/wallet.git/commitdiff
Fix compilation with Heimdal
authorRuss Allbery <eagle@eyrie.org>
Mon, 18 May 2020 02:30:54 +0000 (19:30 -0700)
committerRuss Allbery <eagle@eyrie.org>
Mon, 18 May 2020 02:30:54 +0000 (19:30 -0700)
Add a missing configure probe for krb5_xfree.  If
krb5_524_conv_principal is not available, return an error if asked
to create a srvtab.  (This function has been removed in current
Heimdal.)  Adjust the test suite to handle this case.

client/srvtab.c
configure.ac
tests/client/basic-t.in

index 2b600c279d627f886c48e291d4f52e091140cba2..c0c5c408041f9d9e9ef096235879522cb36e815c 100644 (file)
@@ -2,6 +2,7 @@
  * Implementation of srvtab handling for the wallet client.
  *
  * Written by Russ Allbery <eagle@eyrie.org>
+ * Copyright 2020 Russ Allbery <eagle@eyrie.org>
  * Copyright 2007, 2008, 2010
  *     The Board of Trustees of the Leland Stanford Junior University
  *
@@ -65,10 +66,14 @@ write_srvtab(krb5_context ctx, const char *srvtab, const char *principal,
     krb5_kt_close(ctx, kt);
 
     /* Convert the principal to a Kerberos v4 principal. */
+#ifdef HAVE_KRB5_524_CONV_PRINCIPAL
     ret = krb5_524_conv_principal(ctx, princ, aname, inst, realm);
     if (ret != 0)
         die_krb5(ctx, ret, "error converting principal %s to Kerberos v4",
                  principal);
+#else
+    die("Not built with Kerberos v4 support");
+#endif
 
     /* Assemble the srvtab data. */
     length = 0;
index ef78a05f6bc20cd53140f757c15239d57241ca0c..80eeee13fa69c3ff83e18eb822ab2aec98d1e9b1 100644 (file)
@@ -1,7 +1,7 @@
 dnl Autoconf configuration for wallet.
 dnl
 dnl Written by Russ Allbery <eagle@eyrie.org>
-dnl Copyright 2014, 2016, 2018 Russ Allbery <eagle@eyrie.org>
+dnl Copyright 2014, 2016, 2018, 2020 Russ Allbery <eagle@eyrie.org>
 dnl Copyright 2006-2008, 2010, 2013-2014
 dnl     The Board of Trustees of the Leland Stanford Junior University
 dnl
@@ -58,10 +58,12 @@ RRA_LIB_REMCTL
 RRA_LIB_KRB5
 RRA_LIB_KRB5_SWITCH
 AC_CHECK_TYPES([krb5_realm], [], [], [RRA_INCLUDES_KRB5])
-AC_CHECK_FUNCS([krb5_free_default_realm \
+AC_CHECK_FUNCS([krb5_524_conv_principal \
+    krb5_free_default_realm \
     krb5_get_init_creds_opt_alloc \
     krb5_get_init_creds_opt_set_default_flags \
-    krb5_principal_get_realm])
+    krb5_principal_get_realm \
+    krb5_xfree])
 AC_CHECK_FUNCS([krb5_get_init_creds_opt_free],
     [RRA_FUNC_KRB5_GET_INIT_CREDS_OPT_FREE_ARGS])
 AC_CHECK_DECLS([krb5_kt_free_entry], [], [], [RRA_INCLUDES_KRB5])
index 7634d73cbb4b8d3b1adffae17a821cce685846a5..8d9511a744b2cb3f6b54e7ce396e85012d40538c 100644 (file)
@@ -3,7 +3,7 @@
 # Test suite for the wallet command-line client.
 #
 # Written by Russ Allbery <eagle@eyrie.org>
-# Copyright 2018 Russ Allbery <eagle@eyrie.org>
+# Copyright 2018, 2020 Russ Allbery <eagle@eyrie.org>
 # Copyright 2006-2008, 2010
 #     The Board of Trustees of the Leland Stanford Junior University
 #
@@ -101,16 +101,30 @@ ok '...and keytab is correct' cmp keytab data/fake-keytab
 rm -f keytab
 
 # Test srvtab support.
-ok_program 'get srvtab' 0 '' \
-    "$wallet" -f keytab -S srvtab get keytab service/fake-srvtab
-ok '...and keytab is correct' cmp keytab data/fake-keytab
-rm -f keytab
-ok_program 'get srvtab again' 0 '' \
-    "$wallet" -f keytab -S srvtab get keytab service/fake-srvtab
-ok '...and keytab is correct' cmp keytab data/fake-keytab
-ok '...and srvtab is correct' cmp srvtab data/fake-srvtab
-ok '...and srvtab backup is correct' cmp srvtab.bak data/fake-srvtab
-rm -f srvtab srvtab.bak
+output=`"$wallet" -f keytab -S srvtab get keytab service/fake-srvtab 2>&1`
+if [ x"$output" = x"wallet: Not built with Kerberos v4 support" ]; then
+    rm -f keytab srvtab
+    skip_block 8 'Not built with Kerberos v4 support'
+else
+    rm -f keytab srvtab
+    ok_program 'get srvtab' 0 '' \
+        "$wallet" -f keytab -S srvtab get keytab service/fake-srvtab
+    ok '...and keytab is correct' cmp keytab data/fake-keytab
+    rm -f keytab
+    ok_program 'get srvtab again' 0 '' \
+        "$wallet" -f keytab -S srvtab get keytab service/fake-srvtab
+    ok '...and keytab is correct' cmp keytab data/fake-keytab
+    ok '...and srvtab is correct' cmp srvtab data/fake-srvtab
+    ok '...and srvtab backup is correct' cmp srvtab.bak data/fake-srvtab
+    rm -f srvtab srvtab.bak
+
+    # Test srvtab download into a merged keytab with an older version.
+    cp data/fake-keytab-old keytab
+    ok_program 'keytab merging with srvtab creation' 0 '' \
+        "$wallet" -f keytab -S srvtab get keytab service/fake-srvtab
+    ok '...and the srvtab is correct' cmp srvtab data/fake-srvtab
+    rm -f keytab srvtab
+fi
 
 # Test keytab merging.
 ok_program 'keytab merging' 0 '' \
@@ -120,13 +134,6 @@ ktutil_list data/fake-keytab-merge klist-good
 ok '...and the merged keytab is correct' cmp klist-seen klist-good
 rm -f keytab klist-good klist-seen
 
-# Test srvtab download into a merged keytab with an older version.
-cp data/fake-keytab-old keytab
-ok_program 'keytab merging with srvtab creation' 0 '' \
-    "$wallet" -f keytab -S srvtab get keytab service/fake-srvtab
-ok '...and the srvtab is correct' cmp srvtab data/fake-srvtab
-rm -f keytab srvtab
-
 # Test store from standard input.
 echo "This is a test of store" > input
 ok_program 'store from stdin' 0 '' "$wallet" store file fake-test < input