[SCM] Samba Shared Repository - branch master updated

Andrew Bartlett abartlet at samba.org
Tue Jan 10 15:24:02 MST 2012


The branch, master has been updated
       via  7fb82a5 krb5: Require gss_get_name_attribute or Heimdal's PAC parsing to build with krb5
       via  19deda2 krb5: Require krb5_string_to_key be available to build with krb5
       via  cfe68f2 krb5: Require krb5_set_real_time is available to build with krb5
       via  0c6af1e krb5: Require krb5_principal_compare_any_realm be available to build with krb5
       via  39d73e2 krb5: Require krb5_get_renewed_creds be available to build with krb5
       via  a33d86a krb5: Remove now unused checks for krb5_verify_checksum
       via  39b476d krb5: Require krb5_get_init_creds_opt_alloc/free for build with krb5
       via  fc7b34c krb5: Require krb5_fwd_tgt_creds to be available to build with krb5
       via  016fc0a krb5: Require krb5_get_host_realm and krb5_free_host_realm be available to build with krb5
       via  6b2e742 krb5: Require krb5_c_verify_checksum is available to build with krb5
       via  17e61e4 krb5: Require krb5_c_enctype_compare is available to build with krb5
      from  803dc38 s4:provision: add "+dns" to server services if the dns backend is SAMBA_INTERNAL

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 7fb82a5a247b95bcd981574d6c0db013c954e026
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Fri Jan 6 18:32:41 2012 +1100

    krb5: Require gss_get_name_attribute or Heimdal's PAC parsing to build with krb5
    
    Autobuild-User: Andrew Bartlett <abartlet at samba.org>
    Autobuild-Date: Tue Jan 10 23:23:07 CET 2012 on sn-devel-104

commit 19deda26d0ee61b5e5b41a09181d156b9159663d
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Thu Jan 5 11:39:14 2012 +1100

    krb5: Require krb5_string_to_key be available to build with krb5

commit cfe68f2d5fbd749c3dce7a1a5fa67d2d0a631bf2
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Thu Jan 5 11:34:12 2012 +1100

    krb5: Require krb5_set_real_time is available to build with krb5

commit 0c6af1e2da4619634c3806b5c0ee022bef935bb5
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Thu Jan 5 11:30:22 2012 +1100

    krb5: Require krb5_principal_compare_any_realm be available to build with krb5

commit 39d73e2420be17cc7db16353e1a51a5d2123f9f1
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Thu Jan 5 11:16:24 2012 +1100

    krb5: Require krb5_get_renewed_creds be available to build with krb5

commit a33d86a74592498ec731d57e8cd2ff6a260635bc
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Thu Jan 5 11:09:46 2012 +1100

    krb5: Remove now unused checks for krb5_verify_checksum

commit 39b476d1c9f97b5d1fbc9b08d7a85ac0d59934f2
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Thu Jan 5 11:06:28 2012 +1100

    krb5: Require krb5_get_init_creds_opt_alloc/free for build with krb5
    
    This also assumes the modern API with a krb5_context argument.
    
    Andrew Bartlett

commit fc7b34c83a2fe44b905e8af44dcb6d06154f688d
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Thu Jan 5 10:59:44 2012 +1100

    krb5: Require krb5_fwd_tgt_creds to be available to build with krb5

commit 016fc0af0c30a22d0154ca6c67bb31bac893fb7b
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Thu Jan 5 10:54:50 2012 +1100

    krb5: Require krb5_get_host_realm and krb5_free_host_realm be available to build with krb5

commit 6b2e742d6c719258c8ff1c2309847e88bdae97e7
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Thu Jan 5 10:51:29 2012 +1100

    krb5: Require krb5_c_verify_checksum is available to build with krb5

commit 17e61e4290d7d95b0bdd2accda24e526484a1c51
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Thu Jan 5 10:46:24 2012 +1100

    krb5: Require krb5_c_enctype_compare is available to build with krb5

-----------------------------------------------------------------------

Summary of changes:
 libcli/auth/krb5_wrap.c                 |  113 ++++++-------------------------
 source3/configure.in                    |   92 +++++++++++++++++++++-----
 source3/include/krb5_protos.h           |    4 -
 source3/libads/kerberos.c               |    4 -
 source3/libsmb/clikrb5.c                |  112 ++----------------------------
 source3/wscript                         |   59 ++++++++++++----
 source4/auth/kerberos/kerberos.h        |    4 -
 source4/heimdal_build/wscript_configure |    4 -
 8 files changed, 148 insertions(+), 244 deletions(-)


Changeset truncated at 500 lines:

diff --git a/libcli/auth/krb5_wrap.c b/libcli/auth/krb5_wrap.c
index e7e071d..f528822 100644
--- a/libcli/auth/krb5_wrap.c
+++ b/libcli/auth/krb5_wrap.c
@@ -27,7 +27,7 @@
 #include "libcli/auth/krb5_wrap.h"
 #include "librpc/gen_ndr/krb5pac.h"
 
-#if defined(HAVE_KRB5_PRINCIPAL2SALT) && defined(HAVE_KRB5_USE_ENCTYPE) && defined(HAVE_KRB5_STRING_TO_KEY) && defined(HAVE_KRB5_ENCRYPT_BLOCK)
+#if defined(HAVE_KRB5_PRINCIPAL2SALT) && defined(HAVE_KRB5_USE_ENCTYPE) && defined(HAVE_KRB5_ENCRYPT_BLOCK)
 int create_kerberos_key_from_string_direct(krb5_context context,
 						  krb5_principal host_princ,
 						  krb5_data *password,
@@ -187,35 +187,7 @@ krb5_error_code smb_krb5_unparse_name(TALLOC_CTX *mem_ctx,
 					  krb5_const_principal princ1, 
 					  krb5_const_principal princ2)
 {
-#ifdef HAVE_KRB5_PRINCIPAL_COMPARE_ANY_REALM
-
 	return krb5_principal_compare_any_realm(context, princ1, princ2);
-
-/* krb5_princ_size is a macro in MIT */
-#elif defined(HAVE_KRB5_PRINC_SIZE) || defined(krb5_princ_size)
-
-	int i, len1, len2;
-	const krb5_data *p1, *p2;
-
-	len1 = krb5_princ_size(context, princ1);
-	len2 = krb5_princ_size(context, princ2);
-
-	if (len1 != len2)
-		return False;
-
-	for (i = 0; i < len1; i++) {
-
-		p1 = krb5_princ_component(context, (krb5_principal)discard_const(princ1), i);
-		p2 = krb5_princ_component(context, (krb5_principal)discard_const(princ2), i);
-
-		if (p1->length != p2->length ||	memcmp(p1->data, p2->data, p1->length))
-			return False;
-	}
-
-	return True;
-#else
-#error NO_SUITABLE_PRINCIPAL_COMPARE_FUNCTION
-#endif
 }
 
  void smb_krb5_checksum_from_pac_sig(krb5_checksum *cksum,
@@ -241,71 +213,28 @@ krb5_error_code smb_krb5_unparse_name(TALLOC_CTX *mem_ctx,
 {
 	krb5_error_code ret;
 
-	/* verify the checksum */
-
-	/* welcome to the wonderful world of samba's kerberos abstraction layer:
-	 * 
-	 * function			heimdal 0.6.1rc3	heimdal 0.7	MIT krb 1.4.2
-	 * -----------------------------------------------------------------------------
-	 * krb5_c_verify_checksum	-			works		works
-	 * krb5_verify_checksum		works (6 args)		works (6 args)	broken (7 args) 
-	 */
-
-#if defined(HAVE_KRB5_C_VERIFY_CHECKSUM)
-	{
-		krb5_boolean checksum_valid = false;
-		krb5_data input;
-
-		input.data = (char *)data;
-		input.length = length;
-
-		ret = krb5_c_verify_checksum(context, 
-					     keyblock, 
-					     usage,
-					     &input, 
-					     cksum,
-					     &checksum_valid);
-		if (ret) {
-			DEBUG(3,("smb_krb5_verify_checksum: krb5_c_verify_checksum() failed: %s\n", 
-				error_message(ret)));
-			return ret;
-		}
-
-		if (!checksum_valid)
-			ret = KRB5KRB_AP_ERR_BAD_INTEGRITY;
-	}
-
-#elif KRB5_VERIFY_CHECKSUM_ARGS == 6 && defined(HAVE_KRB5_CRYPTO_INIT) && defined(HAVE_KRB5_CRYPTO) && defined(HAVE_KRB5_CRYPTO_DESTROY)
-
-	/* Warning: MIT's krb5_verify_checksum cannot be used as it will use a key
-	 * without enctype and it ignores any key_usage types - Guenther */
-
-	{
-
-		krb5_crypto crypto;
-		ret = krb5_crypto_init(context,
-				       keyblock,
-				       0,
-				       &crypto);
-		if (ret) {
-			DEBUG(0,("smb_krb5_verify_checksum: krb5_crypto_init() failed: %s\n", 
-				error_message(ret)));
-			return ret;
-		}
+	/* verify the checksum, heimdal 0.7 and MIT krb 1.4.2 and above */
 
-		ret = krb5_verify_checksum(context,
-					   crypto,
-					   usage,
-					   data,
-					   length,
-					   cksum);
-
-		krb5_crypto_destroy(context, crypto);
+	krb5_boolean checksum_valid = false;
+	krb5_data input;
+	
+	input.data = (char *)data;
+	input.length = length;
+	
+	ret = krb5_c_verify_checksum(context, 
+				     keyblock, 
+				     usage,
+				     &input, 
+				     cksum,
+				     &checksum_valid);
+	if (ret) {
+		DEBUG(3,("smb_krb5_verify_checksum: krb5_c_verify_checksum() failed: %s\n", 
+			 error_message(ret)));
+		return ret;
 	}
-
-#else
-#error UNKNOWN_KRB5_VERIFY_CHECKSUM_FUNCTION
-#endif
+	
+	if (!checksum_valid)
+		ret = KRB5KRB_AP_ERR_BAD_INTEGRITY;
 
 	return ret;
 }
diff --git a/source3/configure.in b/source3/configure.in
index c671a42..c0ddc27 100644
--- a/source3/configure.in
+++ b/source3/configure.in
@@ -3848,6 +3848,12 @@ if test x"$with_ads_support" != x"no"; then
   fi
 
   AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
+  ################################################################
+  # test for AD / GSSAPI support being enabled
+  if test x"$have_gssapi" != xyes ; then
+  	AC_MSG_WARN([Samba cannot be supported without GSSAPI])
+  fi
+
   AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_enctypes, $KRB5_LIBS)
   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
@@ -3869,19 +3875,16 @@ if test x"$with_ads_support" != x"no"; then
   AC_CHECK_FUNC_EXT(krb5_krbhst_init, $KRB5_LIBS)
   AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
   AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS)
-  AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS)
   AC_CHECK_FUNC_EXT(krb5_crypto_init, $KRB5_LIBS)
   AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS)
   AC_CHECK_FUNC_EXT(krb5_decode_ap_req, $KRB5_LIBS)
   AC_CHECK_FUNC_EXT(free_AP_REQ, $KRB5_LIBS)
-  AC_CHECK_FUNC_EXT(krb5_verify_checksum, $KRB5_LIBS)
   AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS)
   AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS)
   AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS)
   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)
@@ -3898,6 +3901,7 @@ if test x"$with_ads_support" != x"no"; then
   AC_CHECK_FUNC_EXT(krb5_free_host_realm, $KRB5_LIBS)
   AC_CHECK_FUNC_EXT(gss_krb5_import_cred, $KRB5_LIBS)
   AC_CHECK_FUNC_EXT(gss_get_name_attribute, $KRB5_LIBS)
+  AC_CHECK_FUNC_EXT(gsskrb5_extract_authz_data_from_sec_context, $KRB5_LIBS)
   AC_CHECK_FUNC_EXT(gss_mech_krb5, $KRB5_LIBS)
   AC_CHECK_FUNC_EXT(gss_oid_equal, $KRB5_LIBS)
   AC_CHECK_FUNC_EXT(gss_inquire_sec_context_by_oid, $KRB5_LIBS)
@@ -3960,16 +3964,6 @@ if test x"$with_ads_support" != x"no"; then
 	    [Whether krb5_get_init_creds_opt_free takes a context argument])
   fi
 
-  AC_CACHE_CHECK(whether krb5_verify_checksum takes 7 arguments, smb_krb5_cv_verify_checksum, [
-    AC_TRY_COMPILE([
-	#include <krb5.h>],
-	[krb5_verify_checksum(0, 0, 0, 0, 0, 0, 0);],
-	[smb_krb5_cv_verify_checksum=7],
-	[smb_krb5_cv_verify_checksum=6],
-    )
-  ])
-  AC_DEFINE_UNQUOTED(KRB5_VERIFY_CHECKSUM_ARGS, $smb_krb5_cv_verify_checksum, [Number of arguments to krb5_verify_checksum])
-
   AC_CACHE_CHECK([for checksum in krb5_checksum],
                 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM,[
     AC_TRY_COMPILE([#include <krb5.h>],
@@ -4414,11 +4408,69 @@ if test x"$with_ads_support" != x"no"; then
     use_ads=no
   fi
 
+  if test x"$ac_cv_func_ext_krb5_set_real_time" != x"yes"; then
+    AC_MSG_WARN(krb5_set_real_time encryption type not found in -lkrb5)
+    use_ads=no
+  fi
+
   if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" != x"yes"; then
     AC_MSG_WARN(krb5_mk_req_extended not found in -lkrb5)
     use_ads=no
   fi
 
+  if test x"$ac_cv_func_ext_krb5_c_enctype_compare" != x"yes"; then
+    AC_MSG_WARN(krb5_c_enctype_compare not found in -lkrb5)
+    use_ads=no
+  fi
+
+  if test x"$ac_cv_func_ext_krb5_get_host_realm" != x"yes"
+  then
+    AC_MSG_WARN(krb5_get_host_realm not found in -lkrb5)
+    use_ads=no
+  fi
+
+  if test x"$ac_cv_func_ext_krb5_free_host_realm" != x"yes"
+  then
+    AC_MSG_WARN(krb5_free_host_realm not found in -lkrb5)
+    use_ads=no
+  fi
+
+  if test x"$ac_cv_func_ext_krb5_fwd_tgt_creds" != x"yes"
+  then
+    AC_MSG_WARN(krb5_fwd_tgt_creds not found in -lkrb5)
+    use_ads=no
+  fi
+
+  if test x"$ac_cv_func_ext_krb5_get_init_creds_opt_alloc" != x"yes"
+  then
+    AC_MSG_WARN(krb5_get_init_creds_opt_alloc found in -lkrb5)
+    use_ads=no
+  fi
+
+  if test x"$smb_krb5_cv_creds_opt_free_context" != x"yes"
+  then
+    AC_MSG_WARN(krb5_get_init_creds_opt_free not found or was too old in -lkrb5)
+    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_principal_compare_any_realm" != x"yes"
+  then
+    AC_MSG_WARN(krb5_principal_compare_any_realm not found in -lkrb5)
+    use_ads=no
+  fi
+
+  if test x"$ac_cv_func_ext_krb5_string_to_key" != x"yes"
+  then
+    AC_MSG_WARN(krb5_string_to_key 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
@@ -4440,10 +4492,9 @@ if test x"$with_ads_support" != x"no"; then
     use_ads=no
   fi
 
-  if test x"$ac_cv_func_ext_krb5_c_verify_checksum" != x"yes" -a \
-          x"$ac_cv_func_ext_krb5_verify_checksum" != x"yes"
+  if test x"$ac_cv_func_ext_krb5_c_verify_checksum" != x"yes"
   then
-    AC_MSG_WARN(no KRB5_VERIFY_CHECKSUM_FUNCTION detected)
+    AC_MSG_WARN(krb5_c_verify_checksum not found in -lkrb5)
     use_ads=no
   fi
 
@@ -4466,6 +4517,15 @@ if test x"$with_ads_support" != x"no"; then
 
   fi
 
+  if test x"$ac_cv_func_ext_gss_get_name_attribute" != x"yes" ; then
+    if test x"$ac_cv_func_ext_gsskrb5_extract_authz_data_from_sec_context" != x"yes" -o \
+    if test x"$ac_cv_func_ext_gss_inquire_sec_context_by_oid" != x"yes"
+    then
+      AC_MSG_WARN(need either gss_get_name_attribute or gsskrb5_extract_authz_data_from_sec_context and gss_inquire_sec_context_by_oid in -lgssapi for PAC support)
+      use_ads=no
+    fi
+  fi
+
   if test x"$use_ads" = x"yes"; then
     AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
     AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
diff --git a/source3/include/krb5_protos.h b/source3/include/krb5_protos.h
index 37fc1c6..32f995c 100644
--- a/source3/include/krb5_protos.h
+++ b/source3/include/krb5_protos.h
@@ -42,10 +42,6 @@ krb5_error_code smb_krb5_unparse_name(TALLOC_CTX *mem_ctx,
 				      krb5_const_principal principal,
 				      char **unix_name);
 
-#ifndef HAVE_KRB5_SET_REAL_TIME
-krb5_error_code krb5_set_real_time(krb5_context context, int32_t seconds, int32_t microseconds);
-#endif
-
 krb5_error_code krb5_set_default_tgs_ktypes(krb5_context ctx, const krb5_enctype *enc);
 
 #if defined(HAVE_KRB5_AUTH_CON_SETKEY) && !defined(HAVE_KRB5_AUTH_CON_SETUSERUSERKEY)
diff --git a/source3/libads/kerberos.c b/source3/libads/kerberos.c
index f260dca..a43c7b1 100644
--- a/source3/libads/kerberos.c
+++ b/source3/libads/kerberos.c
@@ -484,7 +484,6 @@ char *kerberos_get_default_realm_from_ccache(TALLOC_CTX *mem_ctx)
 
 char *kerberos_get_realm_from_hostname(TALLOC_CTX *mem_ctx, const char *hostname)
 {
-#if defined(HAVE_KRB5_GET_HOST_REALM) && defined(HAVE_KRB5_FREE_HOST_REALM)
 #if defined(HAVE_KRB5_REALM_TYPE)
 	/* Heimdal. */
 	krb5_realm *realm_list = NULL;
@@ -525,9 +524,6 @@ char *kerberos_get_realm_from_hostname(TALLOC_CTX *mem_ctx, const char *hostname
 		ctx = NULL;
 	}
 	return realm;
-#else
-	return NULL;
-#endif
 }
 
 char *kerberos_get_principal_from_service_hostname(TALLOC_CTX *mem_ctx,
diff --git a/source3/libsmb/clikrb5.c b/source3/libsmb/clikrb5.c
index 6a11def..9af3e49 100644
--- a/source3/libsmb/clikrb5.c
+++ b/source3/libsmb/clikrb5.c
@@ -50,26 +50,6 @@ krb5_error_code krb5_auth_con_set_req_cksumtype(
 	krb5_cksumtype     cksumtype);
 #endif
 
-#ifndef HAVE_KRB5_SET_REAL_TIME
-/*
- * This function is not in the Heimdal mainline.
- */
- krb5_error_code krb5_set_real_time(krb5_context context, int32_t seconds, int32_t microseconds)
-{
-	krb5_error_code ret;
-	int32_t sec, usec;
-
-	ret = krb5_us_timeofday(context, &sec, &usec);
-	if (ret)
-		return ret;
-
-	context->kdc_sec_offset = seconds - sec;
-	context->kdc_usec_offset = microseconds - usec;
-
-	return 0;
-}
-#endif
-
 #if !defined(HAVE_KRB5_SET_DEFAULT_TGS_KTYPES)
 
 #if defined(HAVE_KRB5_SET_DEFAULT_TGS_ENCTYPES)
@@ -471,14 +451,10 @@ bool unwrap_pac(TALLOC_CTX *mem_ctx, DATA_BLOB *auth_data, DATA_BLOB *unwrapped_
 				  krb5_enctype enctype1,
 				  krb5_enctype enctype2)
 {
-#if defined(HAVE_KRB5_C_ENCTYPE_COMPARE)
 	krb5_boolean similar = 0;
 
 	krb5_c_enctype_compare(context, enctype1, enctype2, &similar);
 	return similar ? True : False;
-#elif defined(HAVE_KRB5_ENCTYPES_COMPATIBLE_KEYS)
-	return krb5_enctypes_compatible_keys(context, enctype1, enctype2) ? True : False;
-#endif
 }
 
 static bool ads_cleanup_expired_creds(krb5_context context, 
@@ -542,7 +518,7 @@ static krb5_error_code setup_auth_context(krb5_context context,
 	return retval;
 }
 
-#if defined(TKT_FLG_OK_AS_DELEGATE ) && defined(HAVE_KRB5_FWD_TGT_CREDS) && defined(HAVE_KRB5_AUTH_CON_SETUSERUSERKEY) && defined(KRB5_AUTH_CONTEXT_USE_SUBKEY) && defined(HAVE_KRB5_AUTH_CON_SET_REQ_CKSUMTYPE)
+#if defined(TKT_FLG_OK_AS_DELEGATE ) && defined(HAVE_KRB5_AUTH_CON_SETUSERUSERKEY) && defined(KRB5_AUTH_CONTEXT_USE_SUBKEY) && defined(HAVE_KRB5_AUTH_CON_SET_REQ_CKSUMTYPE)
 static krb5_error_code create_gss_checksum(krb5_data *in_data, /* [inout] */
 						uint32_t gss_flags)
 {
@@ -694,7 +670,7 @@ static krb5_error_code ads_krb5_mk_req(krb5_context context,
 		goto cleanup_creds;
 	}
 
-#if defined(TKT_FLG_OK_AS_DELEGATE ) && defined(HAVE_KRB5_FWD_TGT_CREDS) && defined(HAVE_KRB5_AUTH_CON_SETUSERUSERKEY) && defined(KRB5_AUTH_CONTEXT_USE_SUBKEY) && defined(HAVE_KRB5_AUTH_CON_SET_REQ_CKSUMTYPE)
+#if defined(TKT_FLG_OK_AS_DELEGATE ) && defined(HAVE_KRB5_AUTH_CON_SETUSERUSERKEY) && defined(KRB5_AUTH_CONTEXT_USE_SUBKEY) && defined(HAVE_KRB5_AUTH_CON_SET_REQ_CKSUMTYPE)
 	{
 		uint32_t gss_flags = 0;
 
@@ -783,7 +759,7 @@ static krb5_error_code ads_krb5_mk_req(krb5_context context,
 			 error_message(retval)));
 	}
 
-#if defined(TKT_FLG_OK_AS_DELEGATE ) && defined(HAVE_KRB5_FWD_TGT_CREDS) && defined(HAVE_KRB5_AUTH_CON_SETUSERUSERKEY) && defined(KRB5_AUTH_CONTEXT_USE_SUBKEY) && defined(HAVE_KRB5_AUTH_CON_SET_REQ_CKSUMTYPE)
+#if defined(TKT_FLG_OK_AS_DELEGATE ) && defined(HAVE_KRB5_AUTH_CON_SETUSERUSERKEY) && defined(KRB5_AUTH_CONTEXT_USE_SUBKEY) && defined(HAVE_KRB5_AUTH_CON_SET_REQ_CKSUMTYPE)
 cleanup_data:
 #endif
 
@@ -1160,56 +1136,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);
@@ -1416,44 +1347,15 @@ done:
  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;
-
-	if ((my_opt = SMB_MALLOC_P(krb5_get_init_creds_opt)) == NULL) {
-		return ENOMEM;
-	}
-
-	krb5_get_init_creds_opt_init(my_opt);
-
-	*opt =  my_opt;
-	return 0;
-#endif /* HAVE_KRB5_GET_INIT_CREDS_OPT_ALLOC  */
 }
 
  void smb_krb5_get_init_creds_opt_free(krb5_context context,
 				krb5_get_init_creds_opt *opt)
 {


-- 
Samba Shared Repository


More information about the samba-cvs mailing list