Author: rmilecki Date: 2015-07-07 23:21:49 +0200 (Tue, 07 Jul 2015) New Revision: 46251
Modified: trunk/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]> Modified: trunk/package/utils/nvram/src/nvram.c =================================================================== --- trunk/package/utils/nvram/src/nvram.c 2015-07-07 18:06:39 UTC (rev 46250) +++ trunk/package/utils/nvram/src/nvram.c 2015-07-07 21:21:49 UTC (rev 46251) @@ -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
