Fix memory leaks in libimaevm
cover Fix memory leaks in libimaevm
This series fixes two memory leaks in libimaevm.
Stefan
Stefan Berger (2):
Use EVP_PKEY_free to free a key of public_key_entry Avoid memory leak if public_keys is NULL
src/libimaevm.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-)
Signature · 1 line
2.53.0
PATCH 1/2 Use EVP_PKEY_free to free a key of public_key_entry
Use EVP_PKEY_free to fix a memory leak that occurs when using free() on the key field of public_key_entry that is a pointer to an EVP_PKEY.
--- src/libimaevm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
src/libimaevm.c +1 -1
@@ -400,7 +400,7 @@ void imaevm_free_public_keys(struct public_key_entry *public_keys)while (entry) { next = entry->next;if (entry->key) -free (entry->key); +EVP_PKEY_free (entry->key);free (entry); entry = next; }
Signature · 1 line
2.53.0
PATCH 2/2 Avoid memory leak if public_keys is NULL
In reply to Stefan BergerAvoid a memory leak of a public_key_entry if the passed public_keys pointer is NULL because in this case the entry is lost. For this particular case to work we would need public keys to be passed in as 'struct public_key_entry **public_keys' so that '*public_keys = entry' could be assign. However, this change would propagate all the way to the API of the library and we don't want to change existing functions' signature.
This change should not have any noticeable side-effect since the resolved case did not work before but the newly allocated entry was lost.
--- src/libimaevm.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-)
src/libimaevm.c +9 -10
@@ -378,17 +378,16 @@ static EVP_PKEY *find_keyid(struct public_key_entry *public_keys, tail = entry; } -/* add unknown keys to list */ - entry =calloc (1 ,sizeof (struct public_key_entry )); -if (!entry) { -perror ("calloc" ); -return 0 ; - } - entry->keyid = keyid; -if (tail) +/* add unknown keys to tail of list */ +if (tail) { + entry =calloc (1 ,sizeof (struct public_key_entry )); +if (!entry) { +perror ("calloc" ); +return 0 ; + } + entry->keyid = keyid; tail->next = entry; -else - public_keys = entry; + }log_err ("key %d: %x (unknown keyid)\n" , i,__be32_to_cpup (&keyid));return 0 ; }
Signature · 1 line
2.53.0