2
0
Эх сурвалжийг харах

ramips: fix image generation for mt76x8

Buildbot fails to generate images for targets also generating a
Sercomm binary with following error:

Opening file: /mnt/ramdisk/koen/firmware/builds/owrt_mt76x8/build_dir/target-mipsel_24kc_musl/linux-ramips_mt76x8/tmp/openwrt-ramips-mt76x8-netgear_r6120-squashfs-factory.img.rootfs.zip
Filesize: 3648606 .
mksercommfw: malloc.c:2427: sysmalloc: Assertion `(old_top == initial_top (av) && old_size == 0) || ((unsigned long) (old_size) >= MINSIZE && prev_inuse (old_top) && ((unsigned long) old_end & (pagesize - 1)) == 0)' failed.
Makefile:287: recipe for target '/mnt/ramdisk/koen/firmware/builds/owrt_mt76x8/build_dir/target-mipsel_24kc_musl/linux-ramips_mt76x8/tmp/openwrt-ramips-mt76x8-netgear_r6120-squashfs-factory.img' failed

Debugging using valgrind shows stack corruption due to a buffer overflow.
The author of the generator assumes the filename ends with "root",
while it should be "rootfs".

Fix this by accounting for the 2 missing characters which solves the build issues.

More work is required to cleanup this source, which will be done later on.

Reported-by: Hannu Nyman <[email protected]>
Signed-off-by: Koen Vandeputte <[email protected]>
Koen Vandeputte 7 жил өмнө
parent
commit
c5bf408ed6

+ 1 - 1
tools/firmware-utils/src/mksercommfw.c

@@ -208,7 +208,7 @@ int main(int argc, char *argv[])
 #endif
 	/* now that we got the rootfs, repeat the whole thing again(sorta):
 	 * 1. zip the rootfs */
-	char *zipper = malloc(5 + 2*strlen(rootfs.file_name) + 4);
+	char *zipper = malloc(5 + 2*strlen(rootfs.file_name) + 6);
 	sprintf(zipper, "%s %s %s", "zip ", zipfsname, rootfs.file_name);
 	int ret = system(zipper);