packages: nvram: fix memory leak in _nvram_free
authorZhai Zhaoxuan <zhaizhaoxuan@xiaomi.com>
Tue, 11 Jul 2017 10:12:00 +0000 (18:12 +0800)
committerJo-Philipp Wich <jo@mein.io>
Wed, 13 Dec 2017 15:51:59 +0000 (16:51 +0100)
The value of nvram_tuple_t is allocated in _nvram_realloc,
but it is not freed in _nvram_free.

Signed-off-by: Zhai Zhaoxuan <zhaizhaoxuan@xiaomi.com>
(cherry picked from commit c382237ac33a787043b22abc42f0c5a80278baae)

package/utils/nvram/src/nvram.c

index ca893921076ee17db3e855138f91c28a87d2d1c4..d5e12ee69a3e78cc94916c75009444795d8c1baf 100644 (file)
@@ -47,6 +47,8 @@ static void _nvram_free(nvram_handle_t *h)
        for (i = 0; i < NVRAM_ARRAYSIZE(h->nvram_hash); i++) {
                for (t = h->nvram_hash[i]; t; t = next) {
                        next = t->next;
+                       if (t->value)
+                               free(t->value);
                        free(t);
                }
                h->nvram_hash[i] = NULL;
@@ -55,6 +57,8 @@ static void _nvram_free(nvram_handle_t *h)
        /* Free dead table */
        for (t = h->nvram_dead; t; t = next) {
                next = t->next;
+               if (t->value)
+                       free(t->value);
                free(t);
        }