diff options
| author | Paul Park <pjpark@mit.edu> | 1995-08-08 22:01:34 +0000 |
|---|---|---|
| committer | Paul Park <pjpark@mit.edu> | 1995-08-08 22:01:34 +0000 |
| commit | 92b1fae527c4a04fdbb094497cea26937715e786 (patch) | |
| tree | c8e220450e4f3a4436f9827515e6b141f0e2db1e /src | |
| parent | 001d4456fd84ef0abc40cf0de913ab0f122786d6 (diff) | |
| download | krb5-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.c | 9 |
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) { |
