svn rev #22250: branches/krb5-1-7/src/ lib/krb5/asn.1/ tests/asn.1/
tlyu@MIT.EDU
tlyu at MIT.EDU
Wed Apr 15 16:07:35 EDT 2009
http://src.mit.edu/fisheye/changelog/krb5/?cs=22250
Commit By: tlyu
Log Message:
ticket: 6445
version_fixed: 1.7
pull up r22176 from trunk
------------------------------------------------------------------------
r22176 | tlyu | 2009-04-07 17:22:23 -0400 (Tue, 07 Apr 2009) | 7 lines
Changed paths:
M /trunk/src/lib/krb5/asn.1/asn1_decode.c
M /trunk/src/tests/asn.1/krb5_decode_test.c
ticket: 6445
subject: CVE-2009-0846 asn1_decode_generaltime can free uninitialized pointer
tags: pullup
target_version: 1.7
The asn1_decode_generaltime() function can free an uninitialized
pointer if asn1buf_remove_charstring() fails.
Changed Files:
U branches/krb5-1-7/src/lib/krb5/asn.1/asn1_decode.c
U branches/krb5-1-7/src/tests/asn.1/krb5_decode_test.c
Modified: branches/krb5-1-7/src/lib/krb5/asn.1/asn1_decode.c
===================================================================
--- branches/krb5-1-7/src/lib/krb5/asn.1/asn1_decode.c 2009-04-15 20:07:32 UTC (rev 22249)
+++ branches/krb5-1-7/src/lib/krb5/asn.1/asn1_decode.c 2009-04-15 20:07:34 UTC (rev 22250)
@@ -231,6 +231,7 @@
if (length != 15) return ASN1_BAD_LENGTH;
retval = asn1buf_remove_charstring(buf,15,&s);
+ if (retval) return retval;
/* Time encoding: YYYYMMDDhhmmssZ */
if (s[14] != 'Z') {
free(s);
Modified: branches/krb5-1-7/src/tests/asn.1/krb5_decode_test.c
===================================================================
--- branches/krb5-1-7/src/tests/asn.1/krb5_decode_test.c 2009-04-15 20:07:32 UTC (rev 22249)
+++ branches/krb5-1-7/src/tests/asn.1/krb5_decode_test.c 2009-04-15 20:07:34 UTC (rev 22250)
@@ -486,6 +486,22 @@
ktest_destroy_keyblock(&(ref.subkey));
ref.seq_number = 0;
decode_run("ap_rep_enc_part","(optionals NULL)","7B 1C 30 1A A0 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A1 05 02 03 01 E2 40",decode_krb5_ap_rep_enc_part,ktest_equal_ap_rep_enc_part,krb5_free_ap_rep_enc_part);
+
+ retval = krb5_data_hex_parse(&code, "7B 06 30 04 A0 11 18 0F 31 39 39 34 30 36 31 30 30 36 30 33 31 37 5A A1 05 02 03 01 E2 40");
+ if (retval) {
+ com_err("krb5_decode_test", retval, "while parsing");
+ exit(1);
+ }
+ retval = decode_krb5_ap_rep_enc_part(&code, &var);
+ if (retval != ASN1_OVERRUN) {
+ printf("ERROR: ");
+ } else {
+ printf("OK: ");
+ }
+ printf("ap_rep_enc_part(optionals NULL + expect ASN1_OVERRUN for inconsistent length of timestamp)\n");
+ krb5_free_data_contents(test_context, &code);
+ krb5_free_ap_rep_enc_part(test_context, var);
+
ktest_empty_ap_rep_enc_part(&ref);
}
More information about the cvs-krb5
mailing list