diff options
author | Ezra Peisach <epeisach@mit.edu> | 2003-04-23 20:28:23 +0000 |
---|---|---|
committer | Ezra Peisach <epeisach@mit.edu> | 2003-04-23 20:28:23 +0000 |
commit | 7d043996594e85a5f54439189d66d22e24c19204 (patch) | |
tree | 9a5035d52e9d511bb11d5a5ff8115723f2e06f7a /src/lib | |
parent | 3364c81c47e16042a043c5a399921746e1346214 (diff) | |
download | krb5-7d043996594e85a5f54439189d66d22e24c19204.tar.gz krb5-7d043996594e85a5f54439189d66d22e24c19204.tar.xz krb5-7d043996594e85a5f54439189d66d22e24c19204.zip |
krb5_free_pwd_sequences only frees first element
* kfree.c (krb5_free_pwd_sequences): Actually free the entire
sequence of passwd_phase_elements and not just the first one.
In our tree, this code is only used by krb5_free_pwd_data() which is
subsequently not used anywhere else. Perhaps all code pertaining to pwd
data (asn.1 decoders, encoders, etc. should be removed)
ticket: new
component: krb5-libs
target_version: 1.3
tags: pullup
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@15364 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/krb5/krb/ChangeLog | 5 | ||||
-rw-r--r-- | src/lib/krb5/krb/kfree.c | 20 |
2 files changed, 18 insertions, 7 deletions
diff --git a/src/lib/krb5/krb/ChangeLog b/src/lib/krb5/krb/ChangeLog index 6a48ed281..bdb37203d 100644 --- a/src/lib/krb5/krb/ChangeLog +++ b/src/lib/krb5/krb/ChangeLog @@ -1,3 +1,8 @@ +2003-04-23 Ezra Peisach <epeisach@mit.edu> + + * kfree.c (krb5_free_pwd_sequences): Actually free the entire + sequence of passwd_phase_elements and not just the first one. + 2003-04-13 Ken Raeburn <raeburn@mit.edu> * init_ctx.c (DEFAULT_ETYPE_LIST): Add AES with 256 bits at the diff --git a/src/lib/krb5/krb/kfree.c b/src/lib/krb5/krb/kfree.c index 46d485d32..edb0699eb 100644 --- a/src/lib/krb5/krb/kfree.c +++ b/src/lib/krb5/krb/kfree.c @@ -429,14 +429,20 @@ krb5_free_pwd_data(krb5_context context, krb5_pwd_data *val) void KRB5_CALLCONV krb5_free_pwd_sequences(krb5_context context, passwd_phrase_element **val) { - if ((*val)->passwd) { - krb5_xfree((*val)->passwd); - (*val)->passwd = 0; - } - if ((*val)->phrase) { - krb5_xfree((*val)->phrase); - (*val)->phrase = 0; + register passwd_phrase_element **temp; + + for (temp = val; *temp; temp++) { + if ((*temp)->passwd) { + krb5_xfree((*temp)->passwd); + (*temp)->passwd = 0; + } + if ((*temp)->phrase) { + krb5_xfree((*temp)->phrase); + (*temp)->phrase = 0; + } + krb5_xfree(*temp); } + krb5_xfree(val); } |