summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPaul Park <pjpark@mit.edu>1995-08-08 22:01:34 +0000
committerPaul Park <pjpark@mit.edu>1995-08-08 22:01:34 +0000
commit92b1fae527c4a04fdbb094497cea26937715e786 (patch)
treec8e220450e4f3a4436f9827515e6b141f0e2db1e /src
parent001d4456fd84ef0abc40cf0de913ab0f122786d6 (diff)
downloadkrb5-92b1fae527c4a04fdbb094497cea26937715e786.tar.gz
krb5-92b1fae527c4a04fdbb094497cea26937715e786.tar.xz
krb5-92b1fae527c4a04fdbb094497cea26937715e786.zip
Don't deallocate key/salt tuples if supplied by caller to string_to_key
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@6464 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src')
-rw-r--r--src/kadmin/v5server/srv_key.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/kadmin/v5server/srv_key.c b/src/kadmin/v5server/srv_key.c
index 37cdbf573..c09a19090 100644
--- a/src/kadmin/v5server/srv_key.c
+++ b/src/kadmin/v5server/srv_key.c
@@ -766,6 +766,7 @@ key_string_to_keys(kcontext, dbentp, string, nksalt, ksaltp, nkeysp, keysp)
krb5_int32 nkeysalts;
krb5_key_data *keys;
struct keysalt_iterate_args ksargs;
+ krb5_boolean did_alloc;
DPRINT(DEBUG_CALLS, key_debug_level, ("* key_string_to_keys()\n"));
@@ -775,8 +776,11 @@ key_string_to_keys(kcontext, dbentp, string, nksalt, ksaltp, nkeysp, keysp)
*/
keysalts = ksaltp;
nkeysalts = nksalt;
- if (!keysalts || !nkeysalts)
+ did_alloc = 0;
+ if (!keysalts || !nkeysalts) {
kret = key_dbent_to_keysalts(dbentp, &nkeysalts, &keysalts);
+ did_alloc = 1;
+ }
if (keysalts && nkeysalts) {
if (keys = (krb5_key_data *)
malloc((size_t) (nkeysalts * sizeof(krb5_key_data)))) {
@@ -794,7 +798,8 @@ key_string_to_keys(kcontext, dbentp, string, nksalt, ksaltp, nkeysp, keysp)
}
else
kret = ENOMEM;
- krb5_xfree(keysalts);
+ if (did_alloc)
+ krb5_xfree(keysalts);
}
done:
if (!kret) {