svn rev #23626: branches/krb5-1-8/src/lib/crypto/krb/dk/
tlyu@MIT.EDU
tlyu at MIT.EDU
Mon Jan 11 16:44:13 EST 2010
http://src.mit.edu/fisheye/changelog/krb5/?cs=23626
Commit By: tlyu
Log Message:
ticket: 6629
version_fixed: 1.8
status: resolved
pull up r23608 from trunk
------------------------------------------------------------------------
r23608 | epeisach | 2010-01-07 20:51:19 -0500 (Thu, 07 Jan 2010) | 23 lines
subject: krb5int_derive_key results in cache with uninitialized values
krb5int_derive_key creates a temporary keyblock to add to the derived cache.
krb5_k_free_key will iterate over the derived keys and for ones with cache will
lookup the enctype for the key_cleanup handler.
Unfortunatly, there isn't a keyblock init function that does not allocate the
keyblock - as I suspect this problem will appear in other places.
The valgrind log of this problem is:
==7281== Conditional jump or move depends on uninitialised value(s)
==7281== at 0x40E9AE8: find_enctype (etypes.h:81)
==7281== by 0x40E9C96: krb5_k_free_key (key.c:91)
==7281== by 0x40E9C52: krb5_k_free_key (key.c:86)
==7281== by 0x40EBB00: krb5_c_prf (prf.c:87)
==7281== by 0x40E7B1B: prf_plus (cf2.c:77)
==7281== by 0x40E7CE6: krb5_c_fx_cf2_simple (cf2.c:125)
==7281== by 0x804899C: main (t_cf2.c:70)
==7281==
with memory leaks.
Changed Files:
U branches/krb5-1-8/src/lib/crypto/krb/dk/derive.c
Modified: branches/krb5-1-8/src/lib/crypto/krb/dk/derive.c
===================================================================
--- branches/krb5-1-8/src/lib/crypto/krb/dk/derive.c 2010-01-11 15:19:42 UTC (rev 23625)
+++ branches/krb5-1-8/src/lib/crypto/krb/dk/derive.c 2010-01-11 21:44:13 UTC (rev 23626)
@@ -183,6 +183,10 @@
/* Derive into a temporary keyblock. */
keyblock.length = enc->keylength;
keyblock.contents = malloc(keyblock.length);
+ /* Set the enctype as the krb5_k_free_key will iterate over list
+ or derived keys and invoke krb5_k_free_key which will lookup
+ the enctype for key_cleanup handler */
+ keyblock.enctype = inkey->keyblock.enctype;
if (keyblock.contents == NULL)
return ENOMEM;
ret = krb5int_derive_keyblock(enc, inkey, &keyblock, in_constant);
More information about the cvs-krb5
mailing list