summaryrefslogtreecommitdiffstats
path: root/src/lib
diff options
context:
space:
mode:
authorTom Yu <tlyu@mit.edu>2005-09-22 16:44:20 +0000
committerTom Yu <tlyu@mit.edu>2005-09-22 16:44:20 +0000
commitc02a7929608e666491eb85646a5631e2b98a5ec4 (patch)
tree673dabc66bbe79222332e293186e2574247a33aa /src/lib
parent14fefb4f285d01a2b190f405a135a8e406e5e4fa (diff)
downloadkrb5-c02a7929608e666491eb85646a5631e2b98a5ec4.tar.gz
krb5-c02a7929608e666491eb85646a5631e2b98a5ec4.tar.xz
krb5-c02a7929608e666491eb85646a5631e2b98a5ec4.zip
fix krb5_mk_rep subkey leaks
* 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. ticket: new target_version: 1.4.3 tags: pullup component: krb5-libs git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@17387 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/krb5/krb/ChangeLog6
-rw-r--r--src/lib/krb5/krb/mk_req_ext.c5
2 files changed, 11 insertions, 0 deletions
diff --git a/src/lib/krb5/krb/ChangeLog b/src/lib/krb5/krb/ChangeLog
index ef63af15a..82a3826e0 100644
--- a/src/lib/krb5/krb/ChangeLog
+++ b/src/lib/krb5/krb/ChangeLog
@@ -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-23 Ezra Peisach <epeisach@mit.edu>
* t_ser.c (ser_kcontext_test): Remove statement declaring an
diff --git a/src/lib/krb5/krb/mk_req_ext.c b/src/lib/krb5/krb/mk_req_ext.c
index deeb12387..9066567ba 100644
--- a/src/lib/krb5/krb/mk_req_ext.c
+++ b/src/lib/krb5/krb/mk_req_ext.c
@@ -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) {