DF-3095 / fix_run.sh
#!/bin/sh # DF-3095 fix validation (guest, root, PATCHED kernel): # - both crafted variants must be rejected at mount (ERANGE), guest stays up # - regression: stock image mounts and operates normally set -e uname -a cc -O -o /root/tid_craft /root/tid_craft.c -I/usr/src/sys/vfs/hammer truncate -s 4G /root/base.img vnconfig -c vn0 /root/base.img newfs_hammer -f -L ua3095 /dev/vn0 >/dev/null 2>&1 vnconfig -u vn0 echo "=== panic variant on PATCHED kernel (expect mount failure, no panic) ===" cp /root/base.img /root/tid.img && /root/tid_craft /root/tid.img panic vnconfig -c vn0 /root/tid.img mount_hammer /dev/vn0 /mnt && echo UNEXPECTED_MOUNT_OK || echo MOUNT_REJECTED_AS_EXPECTED mount | grep "/mnt " && umount /mnt || true vnconfig -u vn0 echo "=== wrap variant on PATCHED kernel (expect mount failure, no panic) ===" cp /root/base.img /root/tid2.img && /root/tid_craft /root/tid2.img wrap vnconfig -c vn0 /root/tid2.img mount_hammer /dev/vn0 /mnt && echo UNEXPECTED_MOUNT_OK || echo MOUNT_REJECTED_AS_EXPECTED vnconfig -u vn0 echo "=== regression: stock image on PATCHED kernel (expect full operation) ===" vnconfig -c vn0 /root/base.img mount_hammer /dev/vn0 /mnt for i in 1 2 3; do echo stock$i > /mnt/f$i; done mkdir -p /mnt/w && chmod 777 /mnt/w su -m maxx -c 'echo userwrite > /mnt/w/u1' sync ls -l /mnt /mnt/w umount /mnt && echo STOCK_UMOUNT_OK vnconfig -u vn0 echo FIX_VALIDATION_DONE |