Fix memory leak on nvram_open() and nvram_open_rdonly().
For nvram_open(), the 'fd' should be closed on error, and
mmap_area should be unmap when nvram magic can not be found.
For nvram_open_rdonly(), the 'file' variable should free before
return. Once nvram_find_mtd() return successfully, it will allocate
memory to save mtd device string.
Signed-off-by: BangLang Huang <banglang.huang@foxmail.com>
This reverts commit r45579.
With the latest change r46251 ("nvram: fix "Segmentation fault" caused
by setting memory out of buffer") nvram utility shouldn't crash anymore.
It was tested on 3 brcm47xx devices:
1) Unknown with 0x10000 NVRAM size (0x8000 offset)
2) Linksys E1000 V2.1 with 0x10000 (0x8000 offset)
3) Linksys WRT300N V1 with 0x10000 (0x8000 offset)
And 3 bcm53xx devices:
1) Buffalo WZR-600DHP2 with 0x160000 NVRAM size
2) Buffalo WZR-1750DHP with 0x10000 NVRAM size
3) Netgear R6250 V1 with 0x180000 NVRAM size
(all using 0 offset)
This is an important change as it allows reading whole NVRAM. This may
critical when reading some basic configuration (e.g. switch ports).
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
SVN-Revision: 46253
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ł Miłecki <zajec5@gmail.com>
SVN-Revision: 46251
This reverts commit ff84c27a281bc19df19bc62ee8688cca5586f6e3.
This tool has really broken size handling (many values hardcoded), it
crashes right now in case of NVRAM not filling whole MTD partition.
Conflicts:
package/utils/nvram/src/nvram.h
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
SVN-Revision: 45579
For years Broadcom devices use 64 KiB NVRAM partition size and some of
them indeed have it filled in more than 50%. This change allows handling
whole NVRAM e.g. on Netgear WNDR4500 and Netgear R8000.
The same fix was applied to kernel in upstream commit 6ab7c29.
Reported-by: Hante Meuleman <meuleman@broadcom.com>
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
SVN-Revision: 45566
We don't have broadcom-diag for months or years now and the correct
solution is to simply don't have "nvram" partition on WGT634U anyway.
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
SVN-Revision: 45564
Sytax of /proc/mtd is following:
dev: size erasesize name
which means that sscanf "mtd%d: %08x" reads size, not erasesize.
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
SVN-Revision: 45563