missing padding in cpio_mkfile in usr/gen_init_cpio.c
PATCH 1/1 missing padding in cpio_mkfile in usr/gen_init_cpio.c
Add this line to main() and booting will fail with panic:
cpio_mkfile("t", "/sbin/init", 0700, 0, 0);olaf@nectarine:~/kernel/pineapple/linuxppc-2.5> echo > t olaf@nectarine:~/kernel/pineapple/linuxppc-2.5> gcc -o foo usr/gen_init_cpio.c.kaputt.c && ./foo | tee bar | cpio -vt
drwxr-xr-x 2 root root 0 Nov 16 16:06 /dev crw------- 1 root root 5, 1 Nov 16 16:06 /dev/console drwx------ 2 root root 0 Nov 16 16:06 /root -rwx------ 1 root root 1 Nov 16 16:05 /sbin/init cpio: premature end of file olaf@nectarine:~/kernel/pineapple/linuxppc-2.5> gcc -o foo usr/gen_init_cpio.c && ./foo | tee bar | cpio -vt drwxr-xr-x 2 root root 0 Nov 16 16:06 /dev crw------- 1 root root 5, 1 Nov 16 16:06 /dev/console drwx------ 2 root root 0 Nov 16 16:06 /root -rwx------ 1 root root 1 Nov 16 16:05 /sbin/init
2 blocks
olaf@nectarine:~/kernel/pineapple/linuxppc-2.5> diff -pu usr/gen_init_cpio.c.kaputt.c usr/gen_init_cpio.c
gen_init_cpio.c 2003-11-16 16:02:12.000000000 +0100 renamed from gen_init_cpio.c.kaputt.c 2003-11-16 16:03:27.000000000 +0100 +1 -0
@@ -197,6 +197,7 @@ void cpio_mkfile(const char *filename, c for (i = 0; i < buf.st_size; ++i) fputc(filebuf[i], stdout); + offset += buf.st_size; close(file); free(filebuf); push_pad();
Signature · 3 lines
USB is for mice, FireWire is for men! sUse lINUX ag, nÜRNBERG