[Ltrace-devel] [PATCH 1/6] Fix a memory leak in protolib_cache_maybe_load
Роман Донченко
dpb at corrigendum.ru
Mon Apr 20 00:39:22 UTC 2015
When a non-NULL protolib is returned and own_key is true, the key must
be freed.
---
prototype.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/prototype.c b/prototype.c
index fa52ff3..22e54c4 100644
--- a/prototype.c
+++ b/prototype.c
@@ -547,8 +547,11 @@ protolib_cache_maybe_load(struct protolib_cache *cache,
const char *key, int own_key, bool allow_private,
struct protolib **retp)
{
- if (DICT_FIND_VAL(&cache->protolibs, &key, retp) == 0)
+ if (DICT_FIND_VAL(&cache->protolibs, &key, retp) == 0) {
+ if (*retp != NULL && own_key)
+ free((void *) key);
return 0;
+ }
if (strdup_if(&key, key, !own_key) < 0) {
fprintf(stderr, "Couldn't cache %s: %s\n",
--
1.8.5.6
More information about the Ltrace-devel
mailing list