DF-2491 / cycle.sh
#!/bin/sh # cycle.sh <go-scenario> [keep] -- full reset+rebuild+boot+fire cycle # for one scenario. Run from the host repo root. # Usage: sh findings/poc/DF-2491/cycle.sh 7 [keep] # keep = do not vm.sh reset first (module already installed+loaded; # use for consecutive fatal scenarios across reboots) set -e GO=$1 cd "$(dirname "$0")/../../.." # repo root if [ "$2" != "keep" ]; then echo "=== reset with-src ===" dfbsd-qemu/vm.sh down >/dev/null 2>&1 || true pkill -9 qemu-system-x86 2>/dev/null || true sleep 2 rm -f dfbsd-qemu/vm.pid dfbsd-qemu/vm.sh reset with-src >/dev/null dfbsd-qemu/vm.sh status else echo "=== reboot only (rig installed) ===" dfbsd-qemu/vm.sh run_root 'shutdown -r now' >/dev/null 2>&1 || true sleep 25 dfbsd-qemu/vm.sh down >/dev/null 2>&1 || true sleep 2 dfbsd-qemu/vm.sh up >/dev/null fi dfbsd-qemu/vm.sh run_root 'kldstat -n dfrig2491' if [ "$2" != "keep" ]; then echo "=== deploy rig ===" dfbsd-qemu/vm.sh run_root 'mkdir -p /root/dfrig2491' for f in dfrig2491.c Makefile build.sh run.sh; do B=$(base64 -w0 findings/poc/DF-2491/$f) dfbsd-qemu/vm.sh run_root "echo '$B' | openssl base64 -d -A > /root/dfrig2491/$f" done dfbsd-qemu/vm.sh run_root 'chmod +x /root/dfrig2491/*.sh; sh /root/dfrig2491/build.sh' 2>&1 | tail -4 echo "=== reboot into rig ===" dfbsd-qemu/vm.sh run_root 'shutdown -r now' >/dev/null 2>&1 || true sleep 25 dfbsd-qemu/vm.sh down >/dev/null 2>&1 || true sleep 2 dfbsd-qemu/vm.sh up >/dev/null dfbsd-qemu/vm.sh run_root 'kldstat -n dfrig2491' fi echo "=== fire go=$GO ===" dfbsd-qemu/vm.sh run_root "sh /root/dfrig2491/run.sh $GO" 2>&1 || true sleep 6 echo "=== serial tail ===" dfbsd-qemu/vm.sh log 60 dfbsd-qemu/vm.sh status |