DF-0820 / run.sh
#!/bin/sh # DF-0820 run script — reproduces all three confirmed manifestations. # MUST run as root in the guest (UFS mount is not user-mountable; see VERDICT.md §3). # Usage (from host): vm.sh run_root 'sh /root/run.sh [variant]' # variant: fsize0 (div-by-zero panic) | ncgneg1 (bzero write-primitive panic) # ncghuge (controlled-value overflow panic) | frag0 (infinite loop) # all (default — runs each in turn, resetting the guest between) # # Each panic variant CRASHES THE GUEST; the serial console (dfbsd-qemu/boot.log) # captures the panic. After a panic the guest must be reset (vm.sh reset with-src). set -u V="${1:-all}" cd "$(dirname "$0")" run_one() { local v="$1" echo "================= DF-0820 variant: $v =================" # build a fresh base UFS image rm -f base.img "img_${v}.img" truncate -s 4M base.img vnconfig -u vn0 2>/dev/null || true vnconfig -c vn0 base.img newfs -v /dev/vn0 >/dev/null 2>&1 vnconfig -u vn0 case "$v" in fsize0) ./craft base.img img_fsize0.img fs_fsize=0 ;; ncgneg1) ./craft base.img img_ncgneg1.img fs_ncg=-1 ;; ncghuge) ./craft base.img img_ncghuge.img fs_ncg=858993460 ;; frag0) ./craft base.img img_frag0.img fs_frag=0 ;; *) echo "unknown variant $v"; return 1 ;; esac mkdir -p /mnt/test vnconfig -c vn0 "img_${v}.img" echo "--- mounting img_${v}.img (panic expected for fsize0/ncgneg1/ncghuge) ---" mount -t ufs /dev/vn0 /mnt/test 2>&1 echo "MOUNT_RC=$? (only reached if NO panic)" umount /mnt/test 2>/dev/null || true vnconfig -u vn0 2>/dev/null || true } # also dump the harness characterization (no kernel effect) echo "================= primitive characterization (harness) =================" ./harness -1 2048 7 2048 | sed -n '1,16p' echo "..." ./harness 858993460 2048 7 2048 | sed -n '1,16p' echo if [ "$V" = "all" ]; then run_one fsize0 else run_one "$V" fi |