pullup r17387 from trunk
authorTom Yu <tlyu@mit.edu>
Thu, 22 Sep 2005 17:29:08 +0000 (17:29 +0000)
committerTom Yu <tlyu@mit.edu>
Thu, 22 Sep 2005 17:29:08 +0000 (17:29 +0000)
ticket: 3185
version_fixed: 1.4.3

git-svn-id: svn://anonsvn.mit.edu/krb5/branches/krb5-1-4@17393 dc483132-0cff-0310-8789-dd5450dbe970

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

index e14a1bf7c3be2de3a87243ae129727b4fdf71b92..d96aa445a791579799ba1631a30fcd488941e921 100644 (file)
@@ -1,3 +1,9 @@
+2005-09-22  Tom Yu  <tlyu@mit.edu>
+
+       * mk_req_ext.c (krb5int_generate_and_save_subkey): Check for and
+       free pre-existing subkeys before clobbering the pointers.  This
+       fixes some memory leaks.
+
 2005-08-15  Tom Yu  <tlyu@mit.edu>
 
        * get_in_tkt.c (krb5_get_init_creds): Free tempstr on non-error
index deeb123874821d9413feff96e67b0b6934512242..9066567baf992370641cde4de34ad997030ad0d0 100644 (file)
@@ -90,8 +90,13 @@ krb5int_generate_and_save_subkey (krb5_context context,
     d.data = (char *) &rnd_data;
     (void) krb5_c_random_add_entropy (context, KRB5_C_RANDSOURCE_TIMING, &d);
 
+    if (auth_context->send_subkey)
+       krb5_free_keyblock(context, auth_context->send_subkey);
     if ((retval = krb5_generate_subkey(context, keyblock, &auth_context->send_subkey)))
        return retval;
+
+    if (auth_context->recv_subkey)
+       krb5_free_keyblock(context, auth_context->recv_subkey);
     retval = krb5_copy_keyblock(context, auth_context->send_subkey,
                                &auth_context->recv_subkey);
     if (retval) {