DF-2905 / build.sh
#!/bin/sh # DF-2905 build script — run INSIDE the guest as root (sh build.sh). # Builds: mbread, and 4 KLD variants: # build_base_tail (vulnerable subr_mchain.c, tail-leak test) # build_base_walk (vulnerable subr_mchain.c, walk-correctness test) # build_fix_tail (patched subr_mchain.c, tail-leak test) # build_fix_walk (patched subr_mchain.c, walk-correctness test) set -e cd /root/df2905 cc -O -o mbread mbread.c for V in base fix; do for M in tail walk; do D=build_${V}_${M} rm -rf $D mkdir -p $D cp mchain_leak.c Makefile $D/ if [ "$V" = base ]; then cp /usr/src/sys/kern/libmchain/subr_mchain.c $D/subr_mchain.c else cp subr_mchain_fixed.c $D/subr_mchain.c fi if [ "$M" = walk ]; then printf '#define WALKTEST 1\n' > $D/walkflag.h else : > $D/walkflag.h fi ( cd $D && ln -sfn /usr/src/sys sys && make ) >build_${V}_${M}.log 2>&1 test -f $D/mchainleak.ko done done echo "build OK:" ls -l build_base_tail/mchainleak.ko build_base_walk/mchainleak.ko \ build_fix_tail/mchainleak.ko build_fix_walk/mchainleak.ko |