summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/lib/krb5/krb/ChangeLog6
-rw-r--r--src/lib/krb5/krb/conv_creds.c16
2 files changed, 18 insertions, 4 deletions
diff --git a/src/lib/krb5/krb/ChangeLog b/src/lib/krb5/krb/ChangeLog
index 11e840b6bc..0a1ada7fb5 100644
--- a/src/lib/krb5/krb/ChangeLog
+++ b/src/lib/krb5/krb/ChangeLog
@@ -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,
diff --git a/src/lib/krb5/krb/conv_creds.c b/src/lib/krb5/krb/conv_creds.c
index 3a4e66dc5d..6d4c109f1f 100644
--- a/src/lib/krb5/krb/conv_creds.c
+++ b/src/lib/krb5/krb/conv_creds.c
@@ -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;
}