summaryrefslogtreecommitdiffstats
path: root/src/lib/kdb
diff options
context:
space:
mode:
authorDonald Davis <don@mit.edu>1990-11-02 21:20:48 +0000
committerDonald Davis <don@mit.edu>1990-11-02 21:20:48 +0000
commita00a34c00786b5663bffa26c306282ff89e20f56 (patch)
tree4cdb3b0c8a445cbb02df4e7c5222d2a816585b53 /src/lib/kdb
parente593290041571615df95e7adef46a7d9ff131aec (diff)
downloadkrb5-a00a34c00786b5663bffa26c306282ff89e20f56.tar.gz
krb5-a00a34c00786b5663bffa26c306282ff89e20f56.tar.xz
krb5-a00a34c00786b5663bffa26c306282ff89e20f56.zip
fixed an apparent memory leak in krb5_dbm_db_get_principal();
if the decode of the db contents failed, the search key's string never got freed, because the key's address is held in the stack. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@1413 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib/kdb')
-rw-r--r--src/lib/kdb/kdb_dbm.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/lib/kdb/kdb_dbm.c b/src/lib/kdb/kdb_dbm.c
index 6044e0c85d..a89339b83c 100644
--- a/src/lib/kdb/kdb_dbm.c
+++ b/src/lib/kdb/kdb_dbm.c
@@ -758,14 +758,14 @@ krb5_boolean *more; /* are there more? */
goto cleanup;
contents = dbm_fetch(db, key);
- if (contents.dptr == NULL) {
- found = 0;
- } else {
- if (retval = decode_princ_contents(&contents, entries))
- goto cleanup;
- found = 1;
- }
free_encode_princ_dbmkey(&key);
+
+ if (contents.dptr == NULL)
+ found = 0;
+ else if (retval = decode_princ_contents(&contents, entries))
+ goto cleanup;
+ else found = 1;
+
(void) dbm_close(db);
(void) krb5_dbm_db_unlock(); /* unlock read lock */
if (krb5_dbm_db_end_read(transaction) == 0)