diff options
author | Theodore Tso <tytso@mit.edu> | 1993-12-01 21:56:08 +0000 |
---|---|---|
committer | Theodore Tso <tytso@mit.edu> | 1993-12-01 21:56:08 +0000 |
commit | 47364ff6694cc8b82ffed8eb101f7e1a812af044 (patch) | |
tree | 6776f0780920f7202f07c084ab8c96df8736f5db /src/lib/krb5/free | |
parent | cd3d2b72262b88be26ace32cca1a550a92cffa5b (diff) | |
download | krb5-47364ff6694cc8b82ffed8eb101f7e1a812af044.tar.gz krb5-47364ff6694cc8b82ffed8eb101f7e1a812af044.tar.xz krb5-47364ff6694cc8b82ffed8eb101f7e1a812af044.zip |
Make sure the ticket_info array is freed, not just its contents; and test
to make sure ticket_info is set before trying to free it and its contents.
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@3053 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib/krb5/free')
-rw-r--r-- | src/lib/krb5/free/f_cred_enc.c | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/src/lib/krb5/free/f_cred_enc.c b/src/lib/krb5/free/f_cred_enc.c index 5ca6102d0..e9091290c 100644 --- a/src/lib/krb5/free/f_cred_enc.c +++ b/src/lib/krb5/free/f_cred_enc.c @@ -44,16 +44,19 @@ register krb5_cred_enc_part *val; if (val->s_address) krb5_free_address(val->s_address); - for (temp = val->ticket_info; *temp; temp++) { - if ((*temp)->session) - krb5_free_keyblock((*temp)->session); - if ((*temp)->client) - krb5_free_principal((*temp)->client); - if ((*temp)->server) - krb5_free_principal((*temp)->server); - if ((*temp)->caddrs) - krb5_free_addresses((*temp)->caddrs); - krb5_xfree((*temp)); + if (val->ticket_info) { + for (temp = val->ticket_info; *temp; temp++) { + if ((*temp)->session) + krb5_free_keyblock((*temp)->session); + if ((*temp)->client) + krb5_free_principal((*temp)->client); + if ((*temp)->server) + krb5_free_principal((*temp)->server); + if ((*temp)->caddrs) + krb5_free_addresses((*temp)->caddrs); + krb5_xfree((*temp)); + } + krb5_xfree(val->ticket_info); } krb5_xfree(val); return; |