Fix memory leak in secmem in out of core conditions.
authorWerner Koch <wk@gnupg.org>
Wed, 24 Oct 2018 09:55:34 +0000 (11:55 +0200)
committerWerner Koch <wk@gnupg.org>
Wed, 24 Oct 2018 09:55:34 +0000 (11:55 +0200)
* src/secmem.c (_gcry_secmem_malloc_internal): Release pool descriptor
if the pool could not be allocated.
--

GnuPG-bug-id: 4211
Signed-off-by: Werner Koch <wk@gnupg.org>
src/secmem.c

index 79c135f..3e091d8 100644 (file)
@@ -658,7 +658,10 @@ _gcry_secmem_malloc_internal (size_t size, int xhint)
       pool->size = auto_expand? auto_expand : STANDARD_POOL_SIZE;
       pool->mem = malloc (pool->size);
       if (!pool->mem)
-        return NULL; /* Not enough memory available for a new pool.  */
+        {
+          free (pool);
+          return NULL; /* Not enough memory available for a new pool.  */
+        }
       /* Initialize first memory block.  */
       mb = (memblock_t *) pool->mem;
       mb->size = pool->size - BLOCK_HEAD_SIZE;