diff options
author | Donald Davis <don@mit.edu> | 1990-11-02 21:20:48 +0000 |
---|---|---|
committer | Donald Davis <don@mit.edu> | 1990-11-02 21:20:48 +0000 |
commit | a00a34c00786b5663bffa26c306282ff89e20f56 (patch) | |
tree | 4cdb3b0c8a445cbb02df4e7c5222d2a816585b53 /src/lib/kdb | |
parent | e593290041571615df95e7adef46a7d9ff131aec (diff) | |
download | krb5-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.c | 14 |
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) |