ticket: 1230
authorSam Hartman <hartmans@mit.edu>
Wed, 30 Oct 2002 20:10:40 +0000 (20:10 +0000)
committerSam Hartman <hartmans@mit.edu>
Wed, 30 Oct 2002 20:10:40 +0000 (20:10 +0000)
owner: tlyu
status: open

Ignore trailing nulls on incoming tr encoding to be compatible
with bug in previous versions of krb5

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

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

index 4376c9d9a5af1a1d0a32f2bc7d85937d10dcff05..61704d20617e85d838ee4fa176936f30e3b32861 100644 (file)
@@ -1,3 +1,8 @@
+2002-10-30  Sam Hartman  <hartmans@mit.edu>
+
+       * chk_trans.c: Ignore trailing null in transited  encoding; older
+       versions  of MIT code included this.
+
 2002-10-28  Ken Raeburn  <raeburn@mit.edu>
 
        * get_in_tkt.c (conf_yes, conf_no): Now const.  References
index 4a38bf6f78bdead3e5a7c5eb60101ace95a7afd0..2c7e92f13dc4d51626e7a422a1627e95e8ea07d0 100644 (file)
@@ -315,17 +315,23 @@ check_realm_in_list (krb5_data *realm, void *data)
 }
 
 krb5_error_code
-krb5_check_transited_list (krb5_context ctx, const krb5_data *trans,
+krb5_check_transited_list (krb5_context ctx, const krb5_data *trans_in,
                           const krb5_data *crealm, const krb5_data *srealm)
 {
+  krb5_data trans;
     struct check_data cdata;
     krb5_error_code r;
 
+    trans.length = trans_in->length;
+    trans.data = (char *) trans_in->data;
+    if (trans.length&&( trans.data[trans.length-1] == NULL))
+       trans.length--;
+       
     Tprintf (("krb5_check_transited_list(trans=\"%.*s\", crealm=\"%.*s\", srealm=\"%.*s\")\n",
-             (int) trans->length, trans->data,
+             (int) translength, trans.data,
              (int) crealm->length, crealm->data,
              (int) srealm->length, srealm->data));
-    if (trans->length == 0)
+    if (trans.length == 0)
        return 0;
     r = krb5_walk_realm_tree (ctx, crealm, srealm, &cdata.tgs,
                              KRB5_REALM_BRANCH_CHAR);
@@ -347,7 +353,7 @@ krb5_check_transited_list (krb5_context ctx, const krb5_data *trans,
     }
 #endif
     cdata.ctx = ctx;
-    r = foreach_realm (check_realm_in_list, &cdata, crealm, srealm, trans);
+    r = foreach_realm (check_realm_in_list, &cdata, crealm, srealm, &trans);
     krb5_free_realm_tree (ctx, cdata.tgs);
     return r;
 }