#!/bin/sh
# DF-0732 run: execute both race scenarios on BUGGY then on FIXED.
# BUGGY must print "GROW RACE OOB WRITE CONFIRMED" and "SHRINK RACE UNINIT LEAK CONFIRMED".
# FIXED must print "GROW RACE: NOT TRIGGERED" and "SHRINK RACE: NOT TRIGGERED".
# NOTE: the harness returns nonzero when it CONFIRMS a race (buggy build) — that
# is the EXPECTED signal, so we must NOT `set -e`. The printed markers are the
# real pass/fail signal:
#   BUGGY  -> "GROW RACE OOB WRITE CONFIRMED" + "SHRINK RACE UNINIT LEAK CONFIRMED"
#   FIXED  -> "GROW RACE: NOT TRIGGERED"      + "SHRINK RACE: NOT TRIGGERED"
cd "$(dirname "$0")"

echo "############################################################"
echo "# BUGGY transcription (matches sys/netproto/802_11/wlan_acl/ieee80211_acl.c)"
echo "############################################################"
echo
echo "===== BUGGY: GROW race (N=8 K=4) — expect OOB WRITE ====="
./harness grow 8 4
echo
echo "===== BUGGY: SHRINK race (N=8 K=4) — expect UNINIT LEAK ====="
./harness shrink 8 4
echo
echo "############################################################"
echo "# FIXED transcription (lock-before-read :313 + M_ZERO :319 + bounded foreach :329)"
echo "############################################################"
echo
echo "===== FIXED: GROW race (N=8 K=4) — expect NOT TRIGGERED ====="
./harness_fixed grow 8 4
echo
echo "===== FIXED: SHRINK race (N=8 K=4) — expect NOT TRIGGERED ====="
./harness_fixed shrink 8 4
echo
echo "############################################################"
echo "Run complete."
