krb5: Require krb5_get_renewed_creds be available to build with krb5
authorAndrew Bartlett <abartlet@samba.org>
Thu, 5 Jan 2012 00:16:24 +0000 (11:16 +1100)
committerAndrew Bartlett <abartlet@samba.org>
Tue, 10 Jan 2012 20:50:07 +0000 (21:50 +0100)
source3/configure.in
source3/libsmb/clikrb5.c
source3/wscript
source4/heimdal_build/wscript_configure

index 0372490b26902df6bb3777835300a402fb8d635f..53eaaf2bc5ca00e6d9d58372b7625e1337110668 100644 (file)
@@ -3879,7 +3879,6 @@ if test x"$with_ads_support" != x"no"; then
   AC_CHECK_FUNC_EXT(krb5_princ_size, $KRB5_LIBS)
   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_set_pac_request, $KRB5_LIBS)
   AC_CHECK_FUNC_EXT(krb5_get_renewed_creds, $KRB5_LIBS)
-  AC_CHECK_FUNC_EXT(krb5_get_kdc_cred, $KRB5_LIBS)
   AC_CHECK_FUNC_EXT(krb5_free_error_contents, $KRB5_LIBS)
   AC_CHECK_FUNC_EXT(initialize_krb5_error_table, $KRB5_LIBS)
   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_alloc, $KRB5_LIBS)
@@ -4442,6 +4441,12 @@ if test x"$with_ads_support" != x"no"; then
     use_ads=no
   fi
 
+  if test x"$ac_cv_func_ext_krb5_get_renewed_creds" != x"yes"
+  then
+    AC_MSG_WARN(krb5_get_renewed_creds not found in -lkrb5)
+    use_ads=no
+  fi
+
   if test x"$ac_cv_func_ext_krb5_principal2salt" != x"yes" -a \
           x"$ac_cv_func_ext_krb5_get_pw_salt" != x"yes"
   then
index adb9c9c6fb1bb66fca0cf3ec2ab9f0a2826be427..c0d822e5da2e0f314f328cf1ae9e514455ee2d13 100644 (file)
@@ -1156,56 +1156,11 @@ out:
                }
        }
 
-#ifdef HAVE_KRB5_GET_RENEWED_CREDS     /* MIT */
-       {
-               ret = krb5_get_renewed_creds(context, &creds, client, ccache, discard_const_p(char, service_string));
-               if (ret) {
-                       DEBUG(10,("smb_krb5_renew_ticket: krb5_get_kdc_cred failed: %s\n", error_message(ret)));
-                       goto done;
-               }
-       }
-#elif defined(HAVE_KRB5_GET_KDC_CRED)  /* Heimdal */
-       {
-               krb5_kdc_flags flags;
-               krb5_realm *client_realm = NULL;
-
-               ret = krb5_copy_principal(context, client, &creds_in.client);
-               if (ret) {
-                       goto done;
-               }
-
-               if (service_string) {
-                       ret = smb_krb5_parse_name(context, service_string, &creds_in.server);
-                       if (ret) { 
-                               goto done;
-                       }
-               } else {
-                       /* build tgt service by default */
-                       client_realm = krb5_princ_realm(context, creds_in.client);
-                       if (!client_realm) {
-                               ret = ENOMEM;
-                               goto done;
-                       }
-                       ret = krb5_make_principal(context, &creds_in.server, *client_realm, KRB5_TGS_NAME, *client_realm, NULL);
-                       if (ret) {
-                               goto done;
-                       }
-               }
-
-               flags.i = 0;
-               flags.b.renewable = flags.b.renew = True;
-
-               ret = krb5_get_kdc_cred(context, ccache, flags, NULL, NULL, &creds_in, &creds_out);
-               if (ret) {
-                       DEBUG(10,("smb_krb5_renew_ticket: krb5_get_kdc_cred failed: %s\n", error_message(ret)));
-                       goto done;
-               }
-
-               creds = *creds_out;
+       ret = krb5_get_renewed_creds(context, &creds, client, ccache, discard_const_p(char, service_string));
+       if (ret) {
+               DEBUG(10,("smb_krb5_renew_ticket: krb5_get_kdc_cred failed: %s\n", error_message(ret)));
+               goto done;
        }
-#else
-#error NO_SUITABLE_KRB5_TICKET_RENEW_FUNCTION_AVAILABLE
-#endif
 
        /* hm, doesn't that create a new one if the old one wasn't there? - Guenther */
        ret = krb5_cc_initialize(context, ccache, client);
index a5bb371466e4cd6ae2c937723defce75b0f1530a..7d6b70859189a4a10ed05fa6e947df7f49d081ff 100644 (file)
@@ -584,7 +584,7 @@ krb5_krbhst_get_addrinfo krb5_c_enctype_compare
 krb5_crypto_init krb5_crypto_destroy krb5_decode_ap_req free_AP_REQ
 krb5_c_verify_checksum krb5_principal_compare_any_realm
 krb5_parse_name_norealm krb5_princ_size krb5_get_init_creds_opt_set_pac_request
-krb5_get_renewed_creds krb5_get_kdc_cred krb5_free_error_contents
+krb5_get_renewed_creds krb5_free_error_contents
 initialize_krb5_error_table krb5_get_init_creds_opt_alloc
 krb5_get_init_creds_opt_free krb5_get_init_creds_opt_get_error
 krb5_enctype_to_string krb5_fwd_tgt_creds krb5_auth_con_set_req_cksumtype
@@ -765,6 +765,9 @@ return krb5_kt_resolve(context, "WRFILE:api", &keytab);
         if not conf.CONFIG_SET('KRB5_CREDS_OPT_FREE_REQUIRES_CONTEXT'):
             Logs.warn("krb5_get_init_creds_opt_free was not found or was too old in -lkrb5")
             use_ads=False
+        if not conf.CONFIG_SET('HAVE_KRB5_GET_RENEWED_CREDS'):
+            Logs.warn("krb5_get_renewed_creds not found in -lkrb5")
+            use_ads=False
         if not conf.CONFIG_SET('HAVE_KRB5_PRINCIPAL2SALT') and \
            not conf.CONFIG_SET('HAVE_KRB5_GET_PW_SALT'):
             Logs.warn("no CREATE_KEY_FUNCTIONS detected")
index 7fd557c0171dbe41ba39c764e3a6d8d443e9152e..8a34fddccdea19089a8d8bd433a5786da8c7f10b 100644 (file)
@@ -117,7 +117,6 @@ conf.define('HAVE_KRB5_GET_INIT_CREDS_OPT_ALLOC', 1)
 conf.define('HAVE_KRB5_GET_INIT_CREDS_OPT_FREE', 1)
 conf.define('HAVE_KRB5_GET_INIT_CREDS_OPT_GET_ERROR', 1)
 conf.define('HAVE_KRB5_GET_INIT_CREDS_OPT_SET_PAC_REQUEST', 1)
-conf.define('HAVE_KRB5_GET_KDC_CRED', 1)
 conf.define('HAVE_KRB5_GET_PW_SALT', 1)
 conf.define('HAVE_KRB5_GET_RENEWED_CREDS', 1)
 conf.define('HAVE_KRB5_KEYBLOCK_KEYVALUE', 1)