⬢ DragonFlyBSD Kernel Audit
DF-5418 / capture_logs.sh
← back to finding ↓ download raw
#!/bin/sh
# Capture clean per-phase logs for the evidence packs.
# Requires: build.sh done, fixA/fixB variants present in /root/ppbhx.
set -e
SRC=/usr/src/sys/bus/ppbus/ppb_1284.c
DIR=/root/ppbhx
OUT=/tmp/ppbhx-logs
mkdir -p "$OUT"
cd /tmp/ppbhx-build

clearmsg () { sysctl -w kern.msgbuf_clear=1 >/dev/null 2>&1 || true; }
savePPBHX () { dmesg | grep 'PPBHX' > "$OUT/$1"; }

echo "== baseline (pristine production source) =="
cmp "$SRC" "$DIR/../ppbhx/ppb_1284.pristice 2>/dev/null" || true
rm -f *.o ppbharness.ko
make SYSDIR=/usr/src/sys > "$OUT/build_baseline.log" 2>&1
clearmsg
kldload ./ppbharness.ko
dmesg > "$OUT/run_env_after_load.log"
savePPBHX run_baseline.log
kldunload ppbharness

echo "== fixA (DF-5418 fix only) =="
cp "$DIR/ppb_1284.fixA.c" "$SRC"
rm -f *.o ppbharness.ko
make SYSDIR=/usr/src/sys > "$OUT/fixA_build.log" 2>&1
clearmsg
kldload ./ppbharness.ko
savePPBHX fixA_run.log
kldunload ppbharness

echo "== fixB (DF-5418 + DF-5419 fixes) =="
cp "$DIR/ppb_1284.fixB.c" "$SRC"
rm -f *.o ppbharness.ko
make SYSDIR=/usr/src/sys > "$OUT/fixB_build.log" 2>&1
clearmsg
kldload ./ppbharness.ko
savePPBHX fixB_run.log
kldunload ppbharness

echo "== restore pristine =="
cp "$SRC.hxorig" "$SRC"
cmp "$SRC" "$SRC.hxorig" && echo restored

echo "== environment =="
{
	uname -a
	cc --version 2>/dev/null | head -1
	kldstat
	sysctl kern.osrelease kern.version 2>/dev/null
	sha256 "$SRC"
} > "$OUT/env.txt"

ls -la "$OUT"