#!/bin/bash
# Runner for the OOB-read POC.
set -x
ARTIFACTS_DIR="$(cd "$(dirname "$0")" && pwd)"
CHROME=/chromium/chromium/src/out/asan/chrome
PROFILE=/tmp/chrome-poc-profile
rm -rf "$PROFILE"
pkill -9 -f "$ARTIFACTS_DIR/server.py" 2>/dev/null
sleep 1

# Pick an unused port to avoid TIME_WAIT/stale-process collisions across runs.
export POC_PORT=$((9000 + RANDOM % 1000))
# Start the HTTP server in the background.
python3 "$ARTIFACTS_DIR/server.py" &
SERVER_PID=$!
sleep 1

trap 'kill -9 $SERVER_PID 2>/dev/null' EXIT

# Symbolizer for ASAN.
export ASAN_OPTIONS="symbolize=1:handle_segv=1:handle_sigbus=1:handle_abort=1:detect_odr_violation=0"
export ASAN_SYMBOLIZER_PATH=/chromium/chromium/src/third_party/llvm-build/Release+Asserts/bin/llvm-symbolizer

timeout 25 "$CHROME" \
  --no-first-run --no-default-browser-check --no-sandbox \
  --disable-dev-shm-usage \
  --user-data-dir="$PROFILE" \
  --enable-logging=stderr --v=0 \
  --autoplay-policy=no-user-gesture-required \
  --disable-features=GetDisplayMediaRequiresUserActivation \
  --auto-select-tab-capture-source-by-title=PocTab \
  --auto-accept-this-tab-capture \
  "http://127.0.0.1:${POC_PORT}/poc.html" \
  2>&1
