Author: rmilecki
Date: 2015-07-08 06:55:04 +0200 (Wed, 08 Jul 2015)
New Revision: 46258

Modified:
   branches/chaos_calmer/package/utils/nvram/src/nvram.c
Log:
nvram: fix "Segmentation fault" caused by setting memory out of buffer

Some MTD partitions with NVRAM have content starting in the middle. In
such case offset is set and nvram_header returns pointer to the middle.
It means we have to respect offset when calculating remaining space.

By the way use real MTD partition size (nvram_part_size variable) as we
may want to bump NVRAM_SPACE in the (very near) future.

Signed-off-by: Rafa?\197?\130 Mi?\197?\130ecki <[email protected]>

Backport of r46251

Modified: branches/chaos_calmer/package/utils/nvram/src/nvram.c
===================================================================
--- branches/chaos_calmer/package/utils/nvram/src/nvram.c       2015-07-08 
04:54:57 UTC (rev 46257)
+++ branches/chaos_calmer/package/utils/nvram/src/nvram.c       2015-07-08 
04:55:04 UTC (rev 46258)
@@ -286,11 +286,11 @@
 
        /* Clear data area */
        ptr = (char *) header + sizeof(nvram_header_t);
-       memset(ptr, 0xFF, NVRAM_SPACE - sizeof(nvram_header_t));
+       memset(ptr, 0xFF, nvram_part_size - h->offset - sizeof(nvram_header_t));
        memset(&tmp, 0, sizeof(nvram_header_t));
 
        /* Leave space for a double NUL at the end */
-       end = (char *) header + NVRAM_SPACE - 2;
+       end = (char *) header + nvram_part_size - h->offset - 2;
 
        /* Write out all tuples */
        for (i = 0; i < NVRAM_ARRAYSIZE(h->nvram_hash); i++) {
_______________________________________________
openwrt-commits mailing list
[email protected]
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-commits

Reply via email to