etc.git


etc

~ scripts and random things
git clone https://github.com/djnnvx/etc.git
log | files | refs | archive

cleanup.sh (4377B)

      1 #!/bin/bash
      2 # cleanup.sh — terminate all fuzzing processes and remove build artifacts.
      3 #
      4 # Options:
      5 #   --keep-corpus    preserve corpus/ and output/ directories
      6 #   --keep-builds    preserve compiled binaries + kernel artifacts
      7 #   --crashes-only   only kill processes, don't remove anything
      8 #
      9 # Usage:
     10 #   bash cleanup.sh                # full cleanup
     11 #   bash cleanup.sh --keep-corpus  # kill procs + rm artifacts, keep fuzzing data
     12 
     13 set -uo pipefail
     14 
     15 SCRIPT_DIR="$(cd "$(dirname "${0}")" && pwd)"
     16 cd "${SCRIPT_DIR}"
     17 
     18 SESSION="usbip-fuzz"
     19 QEMU_PID_FILE="${SCRIPT_DIR}/.qemu.pid"
     20 
     21 KEEP_CORPUS=0
     22 KEEP_BUILDS=0
     23 CRASHES_ONLY=0
     24 
     25 for arg in "$@"; do
     26     case "${arg}" in
     27         --keep-corpus)  KEEP_CORPUS=1  ;;
     28         --keep-builds)  KEEP_BUILDS=1  ;;
     29         --crashes-only) CRASHES_ONLY=1 ;;
     30         *) echo "[!] Unknown option: ${arg}" >&2 ;;
     31     esac
     32 done
     33 
     34 log()  { echo "[*] $*"; }
     35 ok()   { echo "[+] $*"; }
     36 
     37 # ── kill tmux session ─────────────────────────────────────────────────────────
     38 if tmux list-sessions 2>/dev/null | grep -q "${SESSION}"; then
     39     log "Killing tmux session '${SESSION}'..."
     40     tmux kill-session -t "${SESSION}" 2>/dev/null || true
     41     ok "tmux session killed."
     42 else
     43     log "No tmux session '${SESSION}' found."
     44 fi
     45 
     46 # ── kill QEMU ─────────────────────────────────────────────────────────────────
     47 if [[ -f "${QEMU_PID_FILE}" ]]; then
     48     QPID="$(cat "${QEMU_PID_FILE}")"
     49     if kill -0 "${QPID}" 2>/dev/null; then
     50         log "Killing QEMU (pid ${QPID})..."
     51         kill "${QPID}" 2>/dev/null || true
     52         sleep 0.5
     53         kill -9 "${QPID}" 2>/dev/null || true
     54         ok "QEMU killed."
     55     fi
     56     rm -f "${QEMU_PID_FILE}"
     57 fi
     58 
     59 # Kill any stray qemu-system-x86_64 processes belonging to this user
     60 pkill -u "$(id -un)" qemu-system-x86_64 2>/dev/null || true
     61 
     62 # ── kill any background AFL++ processes ───────────────────────────────────────
     63 pkill -u "$(id -un)" -f "afl-fuzz.*usbip" 2>/dev/null || true
     64 pkill -u "$(id -un)" -f "fuzz_protocol"    2>/dev/null || true
     65 pkill -u "$(id -un)" -f "fuzz_devlist"    2>/dev/null || true
     66 pkill -u "$(id -un)" -f "fuzz_import"     2>/dev/null || true
     67 pkill -u "$(id -un)" -f "fuzz_urb"        2>/dev/null || true
     68 pkill -u "$(id -un)" -f "fuzz_vhci_server"  2>/dev/null || true
     69 pkill -u "$(id -un)" -f "fuzz_stub_client" 2>/dev/null || true
     70 pkill -u "$(id -un)" -f "net_send"         2>/dev/null || true
     71 pkill -u "$(id -un)" -f "kcov_shim"       2>/dev/null || true
     72 
     73 if [[ "${CRASHES_ONLY}" -eq 1 ]]; then
     74     ok "Process cleanup done. (--crashes-only: no files removed)"
     75     exit 0
     76 fi
     77 
     78 # ── remove build artifacts ────────────────────────────────────────────────────
     79 if [[ "${KEEP_BUILDS}" -eq 0 ]]; then
     80     log "Removing compiled binaries..."
     81     rm -f fuzz_protocol fuzz_protocol.cmplog
     82     rm -f fuzz_devlist  fuzz_devlist.cmplog
     83     rm -f fuzz_import   fuzz_import.cmplog
     84     rm -f fuzz_urb      fuzz_urb.cmplog
     85     rm -f fuzz_vhci_server fuzz_stub_client kcov_shim
     86     rm -f usbip_network.o usbip_common.o mock_syscalls.o names.o
     87     rm -f net_send usbipd-plain
     88 
     89     log "Removing kernel build artifacts..."
     90     rm -f bzImage initramfs.cpio.gz
     91     rm -rf initramfs/
     92 
     93     log "Removing source trees (AFL++, kernel, busybox, usbip)..."
     94     rm -rf AFLplusplus/ afl-build/
     95     rm -rf "linux-6.12/"          # adjust if KERNEL_VER differs
     96     rm -rf "busybox-1.36.1/" busybox-install/ busybox/
     97     rm -rf usbip-src/ usbipd-plain-install/
     98 
     99     ok "Build artifacts removed."
    100 fi
    101 
    102 # ── remove fuzzing data ───────────────────────────────────────────────────────
    103 if [[ "${KEEP_CORPUS}" -eq 0 ]]; then
    104     log "Removing corpus and fuzzing output..."
    105     rm -rf corpus/ output/
    106     rm -f .last_backup .seen_crash_hashes .qemu.pid
    107     ok "Corpus and output removed."
    108 else
    109     log "Keeping corpus/ and output/ (--keep-corpus)."
    110 fi
    111 
    112 ok "Cleanup complete."