* get_in_tkt.c (krb5_get_in_tkt): if krb5_is_as_rep fails, check
authorMark Eichin <eichin@mit.edu>
Fri, 3 Feb 1995 01:58:30 +0000 (01:58 +0000)
committerMark Eichin <eichin@mit.edu>
Fri, 3 Feb 1995 01:58:30 +0000 (01:58 +0000)
if the packet might be a V4 error packet. Use modified V4 check so
that it compiles under SCO.

simple, but untested.

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@4880 dc483132-0cff-0310-8789-dd5450dbe970

src/lib/krb5/krb/ChangeLog
src/lib/krb5/krb/get_in_tkt.c

index c389925daf265b390734df281f6cf0da3f4aaebd..8b107835edc96237351d34c378f4d057bf81bc92 100644 (file)
@@ -1,3 +1,9 @@
+Thu Feb  2 20:51:55 1995  Mark Eichin  (eichin@cygnus.com)
+
+       * get_in_tkt.c (krb5_get_in_tkt): if krb5_is_as_rep fails, check
+       if the packet might be a V4 error packet. Use modified V4 check so
+       that it compiles under SCO.
+
 Mon Jan 30 15:46:14 1995 Chris Provenzano (proven@mit.edu)
 
        * int-proto.h Update prototypes for krb5_get_cred_via_tgt(), and
@@ -47,7 +53,7 @@ Wed Jan 25 16:54:40 1995  Chris Provenzano (proven@mit.edu)
 
 Fri Jan 13 15:23:47 1995  Chris Provenzano (proven@mit.edu)
 
-    * Added krb5_context to all krb5_routines
+       * Added krb5_context to all krb5_routines
 
 Mon Dec 19 21:55:44 1994  Theodore Y. Ts'o  (tytso@dcl)
 
index de17523ce167b05ae9b2c37da9bbb86594e53c47..966ee31e24f4c41b5a44967c825fa8dded32ede4 100644 (file)
@@ -206,7 +206,24 @@ krb5_get_in_tkt(context, options, addrs, pre_auth_type, etype, keytype,
     }
 
     if (!krb5_is_as_rep(&reply)) {
-       retval = KRB5KRB_AP_ERR_MSG_TYPE;
+/* these are in <kerberosIV/prot.h> as well but it isn't worth including. */
+#define V4_KRB_PROT_VERSION    4
+#define V4_AUTH_MSG_ERR_REPLY  (5<<1)
+       /* check here for V4 reply */
+       unsigned int t_switch;
+
+       /* From v4 g_in_tkt.c: This used to be
+          switch (pkt_msg_type(rpkt) & ~1) {
+          but SCO 3.2v4 cc compiled that incorrectly.  */
+       t_switch = reply.data[1]
+       t_switch &= ~1;
+
+       if (reply.data[0] == V4_KRB_PROT_VERSION
+           && t_switch == V4_AUTH_MSG_ERR_REPLY) {
+           retval = KRB5KRB_AP_ERR_V4_REPLY;
+       } else {
+           retval = KRB5KRB_AP_ERR_MSG_TYPE;
+       }
        goto cleanup;
     }
     if (retval = decode_krb5_as_rep(&reply, &as_reply))