#!/bin/bash # Offline fault-injection copies of the candidate (in /tmp). Candidate itself untouched. set -e C=/home/q/doc/modem/jz08-aurora/b6p/cache-extlinux-b6p.img; D=/tmp/b6p-var; rm -rf $D; mkdir -p $D v(){ cp $C $D/$1.img; chmod u+w $D/$1.img; } v F1-no-conf; debugfs -w -R "rm /extlinux/extlinux.conf" $D/F1-no-conf.img v F2-no-kernel; debugfs -w -R "rm /Image.gz-dtb" $D/F2-no-kernel.img v F3-no-initrd; debugfs -w -R "rm /initramfs-b6p.cpio.gz" $D/F3-no-initrd.img v F4-no-dtb; debugfs -w -R "rm /aurora-mm1.dtb" $D/F4-no-dtb.img put(){ debugfs -w -R "rm $2" $D/$1.img; debugfs -w -R "write $3 $2" $D/$1.img; } printf "this is not an extlinux config\n" > $D/bad.conf; v F5-garbage-conf; put F5-garbage-conf /extlinux/extlinux.conf $D/bad.conf printf "default b6p\nlabel b6p\n\tlinux /Image.gz-dtb\n\tinitrd /initramfs-b6p.cpio.gz\n" > $D/nofdt.conf; v F6-no-fdt-line; put F6-no-fdt-line /extlinux/extlinux.conf $D/nofdt.conf sed "s/\$/\r/" /home/q/doc/modem/jz08-aurora/b6p/extlinux-b6p.conf > $D/crlf.conf; v F7-crlf-conf; put F7-crlf-conf /extlinux/extlinux.conf $D/crlf.conf printf "default b6p\nlabel b6p\n\tlinux /Image.gz-dtb\n\tfdt /aurora-mm1.dtb\n\tinitrd /initramfs-b6p.cpio.gz\n\tappend x" > $D/nonl.conf; v F8-no-final-newline; put F8-no-final-newline /extlinux/extlinux.conf $D/nonl.conf { printf "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x03"; head -c 8000000 /dev/zero | tr "\0" "\377"; } > $D/badk; v F9-corrupt-gzip-kernel; put F9-corrupt-gzip-kernel /Image.gz-dtb $D/badk head -c 134217728 /dev/zero > $D/F10-zeroed-cache.img cp $C $D/F11-bad-superblock.img; chmod u+w $D/F11-bad-superblock.img; printf "\x00\x00" | dd of=$D/F11-bad-superblock.img bs=1 seek=1080 conv=notrunc status=none ls $D/*.img