#!/bin/sh
# DF-0753 run: deterministic harness proof (unpatched vs fixed contrast)
# Run as unprivileged user (maxx). No kernel module needed for the harness.
set -e
cd "$(dirname "$0")"

echo "============================================================"
echo "DF-0753 — Stale mbuf pointer after mpls_output realloc"
echo "============================================================"

echo ""
echo ">>> UNPATCHED harness (transcribes kernel code verbatim):"
echo "    mpls_output(struct mbuf *m, ...) — m by VALUE"
echo "./mpls_stale_harness"
echo "------------------------------------------------------------"
./mpls_stale_harness

echo ""
echo "============================================================"
echo ">>> FIXED harness (mpls_output takes struct mbuf **mp):"
echo "./mpls_stale_harness_fixed"
echo "------------------------------------------------------------"
./mpls_stale_harness_fixed

echo ""
echo "============================================================"
echo "Contrast: UNPATCHED shows DOUBLE-FREE + UAF in scenarios A2/B;"
echo "          FIXED shows ALL PASS (zero double-free, zero UAF)."
echo "============================================================"
