X-Git-Url: https://git.sommitrealweird.co.uk/onak.git/blobdiff_plain/42bcfe2cae29f375af4cf2cd3ccfa196b77a3946..488ebf5104018eb86e4e33ab3178421f8df3afb8:/keydb_db3.c?ds=inline diff --git a/keydb_db3.c b/keydb_db3.c index fc203a0..a6946b3 100644 --- a/keydb_db3.c +++ b/keydb_db3.c @@ -217,6 +217,8 @@ int fetch_key(uint64_t keyid, struct openpgp_publickey **publickey, read_openpgp_stream(buffer_fetchchar, &fetchbuf, &packets); parse_keys(packets, publickey); + free_packet_list(packets); + packets = NULL; numkeys++; } else if (ret != DB_NOTFOUND) { dbconn->err(dbconn, ret, "Problem retrieving key"); @@ -286,6 +288,7 @@ int fetch_key_text(const char *search, struct openpgp_publickey **publickey) llfind(keylist, data.data, worddb_cmp) != NULL) { newkeylist = lladd(newkeylist, data.data); + data.data = NULL; } else { free(data.data); data.data = NULL; @@ -298,9 +301,16 @@ int fetch_key_text(const char *search, struct openpgp_publickey **publickey) llfree(keylist, free); keylist = newkeylist; newkeylist = NULL; + if (data.data != NULL) { + free(data.data); + data.data = NULL; + } } + llfree(wordlist, NULL); + wordlist = NULL; - for (newkeylist = keylist; newkeylist != NULL; + for (newkeylist = keylist; + newkeylist != NULL && numkeys < config.maxkeys; newkeylist = newkeylist->next) { keyid = 0; @@ -402,6 +412,14 @@ int store_key(struct openpgp_publickey *publickey, bool intrans, bool update) dbconn->err(dbconn, ret, "Problem storing key"); } + free(storebuf.buffer); + storebuf.buffer = NULL; + storebuf.size = 0; + storebuf.offset = 0; + + free_packet_list(packets); + packets = NULL; + /* * Walk through our uids storing the words into the db with the keyid. */