[11548] in Kerberos-V5-bugs

home help back first fref pref prev next nref lref last post

[krbdev.mit.edu #6726] SPNEGO doesn't interoperate with Windows 2000

daemon@ATHENA.MIT.EDU (Arlene Berry" via RT)
Wed May 19 16:51:40 2010

Mail-followup-to: rt@krbdev.mit.edu
mail-copies-to: never
From: ""Arlene Berry" via RT" <rt-comment@krbdev.MIT.EDU>
In-Reply-To: <rt-6726@krbdev.mit.edu>
Message-ID: <rt-6726-32837.18.180177519698@krbdev.mit.edu>
To: "'AdminCc of krbdev.mit.edu Ticket #6726'":;"'AdminCc of krbdev.mit.edu Ticket #6726'":;@MIT.EDU
Date: Wed, 19 May 2010 16:51:38 -0400 (EDT)
Reply-To: rt-comment@krbdev.MIT.EDU
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: krb5-bugs-bounces@mit.edu

The problem is Windows 2000 returns a second copy of the mechanism
response token as the mechListMIC.  We saw this with Windows 2000
Server.  We worked around the problem by changing get_negTokenResp which
parses out the SPNEGO token components to detect the duplicate token and
not return it as a mechListMIC.  This prevents subsequent errors when
attempting to parse the duplicate response as a mechListMIC and was
enough for it to work.  The decision as to whether a mechListMIC is
required happens elsewhere and is unchanged.

Index: src/lib/gssapi/spnego/spnego_mech.c
===================================================================
--- src/lib/gssapi/spnego/spnego_mech.c	(revision 40750)
+++ src/lib/gssapi/spnego/spnego_mech.c	(revision 40751)
@@ -3111,6 +3111,19 @@
 		*mechListMIC = get_input_token(&ptr, REMAIN);
 		if (*mechListMIC == GSS_C_NO_BUFFER)
 			return GSS_S_DEFECTIVE_TOKEN;
+
+                /* Handle Windows 2000 duplicate response token */
+                if (*responseToken &&
+                    ((*responseToken)->length ==
(*mechListMIC)->length) &&
+                    !memcmp((*responseToken)->value,
(*mechListMIC)->value,
+                            (*responseToken)->length))
+                {
+                    OM_uint32 tmpmin;
+
+                    gss_release_buffer(&tmpmin, *mechListMIC);
+                    free(*mechListMIC);
+                    *mechListMIC = NULL;
+                }
 	}
 	return GSS_S_COMPLETE;
 #undef REMAIN


_______________________________________________
krb5-bugs mailing list
krb5-bugs@mit.edu
https://mailman.mit.edu/mailman/listinfo/krb5-bugs

home help back first fref pref prev next nref lref last post