On Saturday 26 June 2010 00:51, Lauri Kasanen wrote:
> Hi
> 
> The commit 26b6ccf340, "*: simplify checks for gz/bz2/xz magic" breaks the 
> loading of compressed kernel modules.
> 
> sudo ./busybox insmod /tmp/scsi_wait_scan.ko.gz
> insmod: corrupted data
> insmod: can't insert '/tmp/scsi_wait_scan.ko.gz': invalid module format
> 
> The same can be seen with other compression formats too (I tested bz2 after 
> gz).

Please try attached patch.
-- 
vda
diff -ad -urpN busybox.6/archival/rpm2cpio.c busybox.7/archival/rpm2cpio.c
--- busybox.6/archival/rpm2cpio.c	2010-06-24 04:40:43.000000000 +0200
+++ busybox.7/archival/rpm2cpio.c	2010-06-26 05:00:35.000000000 +0200
@@ -75,7 +75,7 @@ int rpm2cpio_main(int argc UNUSED_PARAM,
 		} magic;
 		IF_DESKTOP(long long) int FAST_FUNC (*unpack)(int src_fd, int dst_fd);
 
-		xread(rpm_fd, magic.b16, sizeof(magic.b16));
+		xread(rpm_fd, magic.b16, sizeof(magic.b16[0]));
 		if (magic.b16[0] == GZIP_MAGIC) {
 			unpack = unpack_gz_stream;
 		} else
@@ -89,7 +89,7 @@ int rpm2cpio_main(int argc UNUSED_PARAM,
 		) {
 			/* .xz signature: 0xfd, '7', 'z', 'X', 'Z', 0x00 */
 			/* More info at: http://tukaani.org/xz/xz-file-format.txt */
-			xread(rpm_fd, magic.b32, sizeof(magic.b32));
+			xread(rpm_fd, magic.b32, sizeof(magic.b32[0]));
 			if (magic.b32[0] != XZ_MAGIC2)
 				goto no_magic;
 			/* unpack_xz_stream wants fd at position 0 */
diff -ad -urpN busybox.6/libbb/read_printf.c busybox.7/libbb/read_printf.c
--- busybox.6/libbb/read_printf.c	2010-06-24 04:40:43.000000000 +0200
+++ busybox.7/libbb/read_printf.c	2010-06-26 05:00:35.000000000 +0200
@@ -265,7 +265,7 @@ void FAST_FUNC setup_unzip_on_fd(int fd 
 
 	/* .gz and .bz2 both have 2-byte signature, and their
 	 * unpack_XXX_stream wants this header skipped. */
-	xread(fd, magic.b16, sizeof(magic.b16));
+	xread(fd, magic.b16, sizeof(magic.b16[0]));
 	if (ENABLE_FEATURE_SEAMLESS_GZ
 	 && magic.b16[0] == GZIP_MAGIC
 	) {
@@ -292,7 +292,7 @@ void FAST_FUNC setup_unzip_on_fd(int fd 
 		/* .xz signature: 0xfd, '7', 'z', 'X', 'Z', 0x00 */
 		/* More info at: http://tukaani.org/xz/xz-file-format.txt */
 		offset = -6;
-		xread(fd, magic.b32, sizeof(magic.b32));
+		xread(fd, magic.b32, sizeof(magic.b32[0]));
 		if (magic.b32[0] == XZ_MAGIC2) {
 # if BB_MMU
 			xformer = unpack_xz_stream;
_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to