nvram: refuse to open NVRAM for writing if it's too big to be handled
authorrmilecki <rmilecki@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Wed, 22 Apr 2015 19:07:19 +0000 (19:07 +0000)
committerrmilecki <rmilecki@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Wed, 22 Apr 2015 19:07:19 +0000 (19:07 +0000)
Otherwise writing anything will result in loosing data.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@45565 3c298f89-4303-0410-b956-a3cf2f4a3e73

package/utils/nvram/src/nvram.c

index f2c79ff..0e1c726 100644 (file)
@@ -389,8 +389,8 @@ nvram_handle_t * nvram_open(const char *file, int rdonly)
 
                                header = nvram_header(h);
 
-                               if( header->magic == NVRAM_MAGIC )
-                               {
+                               if (header->magic == NVRAM_MAGIC &&
+                                   (rdonly || header->len < NVRAM_SPACE)) {
                                        _nvram_rehash(h);
                                        free(mtd);
                                        return h;