* conv_creds.c (krb5int_encode_v4tkt): Zero out unused parts of ticket. Use a
authorKen Raeburn <raeburn@mit.edu>
Tue, 16 Dec 2003 19:21:49 +0000 (19:21 +0000)
committerKen Raeburn <raeburn@mit.edu>
Tue, 16 Dec 2003 19:21:49 +0000 (19:21 +0000)
temorary in case krb5_int32 isn't "int".
(decode_v4tkt): Use a temorary in case krb5_int32 isn't "int".

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

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

index 11e840b6bc35c53c27715ca465187d4d8e6cd5a1..0a1ada7fb5c88643b06a3d9b69cba31a93659f6f 100644 (file)
@@ -1,3 +1,9 @@
+2003-12-16  Ken Raeburn  <raeburn@mit.edu>
+
+       * conv_creds.c (krb5int_encode_v4tkt): Zero out unused parts of
+       ticket.  Use a temorary in case krb5_int32 isn't "int".
+       (decode_v4tkt): Use a temorary in case krb5_int32 isn't "int".
+
 2003-12-13  Ken Raeburn  <raeburn@mit.edu>
 
        * mk_req_ext.c (krb5int_generate_and_save_subkey): New function,
index 3a4e66dc5d4c36139c560efedce1e59867f58c42..6d4c109f1f7ca905adf23f16318083f0854dcef5 100644 (file)
@@ -186,14 +186,19 @@ int krb5int_encode_v4tkt(v4tkt, buf, encoded_len)
      unsigned int *encoded_len;
 {
      int buflen, ret;
+     krb5_int32 temp;
 
      buflen = *encoded_len;
 
-     if ((ret = encode_int32(&buf, &buflen, &v4tkt->length)))
+     if (v4tkt->length < MAX_KTXT_LEN)
+         memset(v4tkt->dat + v4tkt->length, 0, MAX_KTXT_LEN - v4tkt->length);
+     temp = v4tkt->length;
+     if ((ret = encode_int32(&buf, &buflen, &temp)))
          return ret;
      if ((ret = encode_bytes(&buf, &buflen, (char *)v4tkt->dat, MAX_KTXT_LEN)))
          return ret;
-     if ((ret = encode_int32(&buf, &buflen, (krb5_int32 *) &v4tkt->mbz)))
+     temp = v4tkt->mbz;
+     if ((ret = encode_int32(&buf, &buflen, &temp)))
          return ret;
 
      *encoded_len -= buflen;
@@ -236,14 +241,17 @@ static int decode_v4tkt(v4tkt, buf, encoded_len)
      unsigned int *encoded_len;
 {
      int buflen, ret;
+     krb5_int32 temp;
 
      buflen = *encoded_len;
-     if ((ret = decode_int32(&buf, &buflen, &v4tkt->length)))
+     if ((ret = decode_int32(&buf, &buflen, &temp)))
          return ret;
+     v4tkt->length = temp;
      if ((ret = decode_bytes(&buf, &buflen, (char *)v4tkt->dat, MAX_KTXT_LEN)))
          return ret;
-     if ((ret = decode_int32(&buf, &buflen, (krb5_int32 *) &v4tkt->mbz)))
+     if ((ret = decode_int32(&buf, &buflen, &temp)))
          return ret;
+     v4tkt->mbz = temp;
      *encoded_len -= buflen;
      return 0;
 }