Make krb5_encode_kdc_rep pass in the correct msg_type to the ASN.1
authorTheodore Tso <tytso@mit.edu>
Wed, 17 Aug 1994 22:28:33 +0000 (22:28 +0000)
committerTheodore Tso <tytso@mit.edu>
Wed, 17 Aug 1994 22:28:33 +0000 (22:28 +0000)
encoding routines.  Not that value is being used now, but it might be
in the future, and we should make sure the high level routines are
doing the right thing.

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

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

index 1c09ec5913daa1f6370e770760f82833bf949afd..2fd74813a5472186018ef6413dc2f7a67b8a2058 100644 (file)
@@ -1,3 +1,12 @@
+Wed Aug 17 17:58:22 1994  Theodore Y. Ts'o  (tytso at tsx-11)
+
+       * encode_kdc.c (krb5_encode_kdc_rep): Pass in to
+       encode_krb5_enc_kdc_rep_part the msg_type which should be used.
+       Old versions of Kerberos always assume TGS_REP; this merely allows
+       the right msg_type to be passed down to the encoding routines.
+       For now, the encoding routines will ignore this value and do
+       things the old way, for compatibility's sake.
+
 Mon Aug  8 22:38:16 1994  Theodore Y. Ts'o  (tytso at tsx-11)
 
        * preauth.c: Renamed preauthentication mechanism names to match
index cdcfe624df7fe114257e0450f1b9e35262282aaa..4de4e4a6d083bb5fdfa0b448437bd040ac05fa74 100644 (file)
@@ -64,6 +64,7 @@ OLDDECLARG(krb5_data **, enc_rep)
     krb5_data *scratch;
     krb5_encrypt_block eblock;
     krb5_error_code retval;
+    krb5_enc_kdc_rep_part tmp_encpart;
 
     if (!valid_etype(dec_rep->enc_part.etype))
        return KRB5_PROG_ETYPE_NOSUPP;
@@ -76,10 +77,26 @@ OLDDECLARG(krb5_data **, enc_rep)
        return KRB5_BADMSGTYPE;
     }
 
-    retval = encode_krb5_enc_kdc_rep_part(encpart, &scratch);
+    /*
+     * We don't want to modify encpart, but we need to be able to pass
+     * in the message type to the encoder, so it can set the ASN.1
+     * type correct.
+     * 
+     * Although note that it may be doing nothing with the message
+     * type, to be compatible with old versions of Kerberos that ways
+     * encode this as a TGS_REP regardly of what it really should be;
+     * also note that the reason why we are passing it in a structure
+     * instead of as an argument to encode_krb5_enc_kdc_rep_part (the
+     * way we should) is for compatibility with the ISODE version of
+     * this fuction.  Ah, compatibility....
+     */
+    tmp_encpart = *encpart;
+    tmp_encpart.msg_type = type;
+    retval = encode_krb5_enc_kdc_rep_part(&tmp_encpart, &scratch);
     if (retval) {
        return retval;
     }
+    memset(&tmp_encpart, 0, sizeof(tmp_encpart));
 
 #define cleanup_scratch() { (void) memset(scratch->data, 0, scratch->length); \
 krb5_free_data(scratch); }