[csw-devel] SF.net SVN: gar:[16198] csw/mgar/pkg/krb5-lib/trunk

wahwah at users.sourceforge.net wahwah at users.sourceforge.net
Wed Nov 16 10:09:54 CET 2011


Revision: 16198
          http://gar.svn.sourceforge.net/gar/?rev=16198&view=rev
Author:   wahwah
Date:     2011-11-16 09:09:54 +0000 (Wed, 16 Nov 2011)
Log Message:
-----------
krb5-lib/trunk: A patch attempting to fix krb5_set_password_using_ccache() failure on Windows 2003 R2

Revision Links:
--------------
    http://gar.svn.sourceforge.net/gar/?rev=2&view=rev

Modified Paths:
--------------
    csw/mgar/pkg/krb5-lib/trunk/Makefile

Added Paths:
-----------
    csw/mgar/pkg/krb5-lib/trunk/files/krb5-1.9.2-krb5_set_password_using_ccache.patch

Modified: csw/mgar/pkg/krb5-lib/trunk/Makefile
===================================================================
--- csw/mgar/pkg/krb5-lib/trunk/Makefile	2011-11-15 16:49:36 UTC (rev 16197)
+++ csw/mgar/pkg/krb5-lib/trunk/Makefile	2011-11-16 09:09:54 UTC (rev 16198)
@@ -25,6 +25,7 @@
 # PATCHFILES += 0003-local-libraries-first-when-linking.patch
 PATCHFILES += 0004-libkdb_ldap-isblank-define.patch
 PATCHFILES += 0005-Add-strings.h-to-setenv.c-for-strlen-and-other-stuff.patch
+PATCHFILES += krb5-1.9.2-krb5_set_password_using_ccache.patch
 
 BUILD_DEP_PKGS = CSWtcl
 

Added: csw/mgar/pkg/krb5-lib/trunk/files/krb5-1.9.2-krb5_set_password_using_ccache.patch
===================================================================
--- csw/mgar/pkg/krb5-lib/trunk/files/krb5-1.9.2-krb5_set_password_using_ccache.patch	                        (rev 0)
+++ csw/mgar/pkg/krb5-lib/trunk/files/krb5-1.9.2-krb5_set_password_using_ccache.patch	2011-11-16 09:09:54 UTC (rev 16198)
@@ -0,0 +1,59 @@
+commit 908a2602acb0ea75690141d730ef0aee4f13b018
+Author: ghudson <ghudson at dc483132-0cff-0310-8789-dd5450dbe970>
+Date:   Mon Nov 14 18:02:52 2011 +0000
+
+    ticket: 7016
+    subject: Handle TGS referrals to the same realm
+    target_version: 1.9.3
+    tags: pullup
+    
+    krb5 1.6 through 1.8 contained a workaround for the Active Directory
+    behavior of returning a TGS referral to the same realm as the request.
+    1.9 responds to this behavior by caching the returned TGT, trying
+    again, and detecting a referral loop.  This is a partial regression of
+    ticket #4955.  Detect this case and fall back to a non-referreal
+    request.
+    
+    git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@25472 dc483132-0cff-0310-8789-dd5450dbe970
+
+diff --git a/src/include/k5-trace.h b/src/include/k5-trace.h
+index 2d34574..926c523 100644
+--- a/src/include/k5-trace.h
++++ b/src/include/k5-trace.h
+@@ -357,6 +357,9 @@
+     TRACE(c, (c, "TGS request result: {kerr}", code))
+ #define TRACE_TKT_CREDS_RETRY_TCP(c)                                    \
+     TRACE(c, (c, "Request or response is too big for UDP; retrying with TCP"))
++#define TRACE_TKT_CREDS_SAME_REALM_TGT(c, realm)                        \
++    TRACE(c, (c, "Received TGT referral back to same realm ({data}); trying " \
++              "again without referrals", realm))
+ #define TRACE_TKT_CREDS_SERVICE_REQ(c, princ, referral)                 \
+     TRACE(c, (c, "Requesting tickets for {princ}, referrals {str}", princ, \
+               (referral) ? "on" : "off"))
+diff --git a/src/lib/krb5/krb/get_creds.c b/src/lib/krb5/krb/get_creds.c
+index f229ba1..780e656 100644
+--- a/src/lib/krb5/krb/get_creds.c
++++ b/src/lib/krb5/krb/get_creds.c
+@@ -557,6 +557,14 @@ step_referrals(krb5_context context, krb5_tkt_creds_context ctx)
+         return begin_non_referral(context, ctx);
+     }
+ 
++    /* Active Directory may return a TGT to the local realm.  Try a
++     * non-referral query if we see this. */
++    referral_realm = &ctx->reply_creds->server->data[1];
++    if (data_eq(*referral_realm, ctx->cur_tgt->server->data[1])) {
++        TRACE_TKT_CREDS_SAME_REALM_TGT(context, referral_realm);
++        return begin_non_referral(context, ctx);
++    }
++
+     if (ctx->referral_count == 1) {
+         /* Cache the referral TGT only if it's from the local realm.
+          * Make sure to note the associated authdata, if any. */
+@@ -577,7 +585,6 @@ step_referrals(krb5_context context, krb5_tkt_creds_context ctx)
+         return KRB5_KDC_UNREACH;
+ 
+     /* Check for referral loops. */
+-    referral_realm = &ctx->reply_creds->server->data[1];
+     if (seen_realm_before(context, ctx, referral_realm))
+         return KRB5_KDC_UNREACH;
+     code = remember_realm(context, ctx, referral_realm);

This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.



More information about the devel mailing list