nvram: fix memory leak
[openwrt/openwrt.git] / package / utils / nvram / src / nvram.c
index 0e4294391ad69af92d2682ac144518fa20b6e9a5..ca893921076ee17db3e855138f91c28a87d2d1c4 100644 (file)
@@ -380,7 +380,9 @@ nvram_handle_t * nvram_open(const char *file, int rdonly)
 
                        if( offset < 0 )
                        {
+                               munmap(mmap_area, nvram_part_size);
                                free(mtd);
+                               close(fd);
                                return NULL;
                        }
                        else if( (h = malloc(sizeof(nvram_handle_t))) != NULL )
@@ -410,6 +412,7 @@ nvram_handle_t * nvram_open(const char *file, int rdonly)
        }
 
        free(mtd);
+       close(fd);
        return NULL;
 }