aboutsummaryrefslogtreecommitdiffstats
path: root/g10/keydb.c
diff options
context:
space:
mode:
authorJustus Winter <[email protected]>2016-06-30 15:09:59 +0000
committerJustus Winter <[email protected]>2016-06-30 16:50:16 +0000
commit29beea6462cca32d3278b0f7f9364ff4342327b8 (patch)
treebd80e409c597e0620dbc1d9be5da380a17e8e1e8 /g10/keydb.c
parentg10: Fix memory leak. (diff)
downloadgnupg-29beea6462cca32d3278b0f7f9364ff4342327b8.tar.gz
gnupg-29beea6462cca32d3278b0f7f9364ff4342327b8.zip
g10: Fix keybox-related memory leaks.
* g10/keydb.c (keydb_release): Clear keyblock cache. (keydb_get_keyblock): Revert previous change. * kbx/keybox-blob.c (create_blob_finish): Free previous buffer, free fixups after applying them. (_keybox_release_blob): Free buffer. Currently, the buffer has been extracted before the keybox is released, but this is the right thing to do here. Fixes-commit: c57501cc Signed-off-by: Justus Winter <[email protected]>
Diffstat (limited to 'g10/keydb.c')
-rw-r--r--g10/keydb.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/g10/keydb.c b/g10/keydb.c
index c483bb138..e49e25fd9 100644
--- a/g10/keydb.c
+++ b/g10/keydb.c
@@ -937,6 +937,7 @@ keydb_release (KEYDB_HANDLE hd)
}
}
+ keyblock_cache_clear (hd);
xfree (hd);
}
@@ -1387,8 +1388,11 @@ keydb_get_keyblock (KEYDB_HANDLE hd, KBNODE *ret_kb)
hd->keyblock_cache.pk_no = pk_no;
hd->keyblock_cache.uid_no = uid_no;
}
- xfree (sigstatus);
- iobuf_close (iobuf);
+ else
+ {
+ xfree (sigstatus);
+ iobuf_close (iobuf);
+ }
}
}
break;