mirror of
https://github.com/kuhyx/testsAndMisc.git
synced 2026-11-10 18:07:06 +01:00
Shell tests has been red since fbe9134c. Three assertions across two
files grep pacman_wrapper.sh for functions the split moved into the flat
pw_*.sh libs: pacman_hooks_manage_guard_lib and
should_use_wrapper_guard_lib_fallback (pw_guard.sh),
verify_policy_integrity and the two -U helpers (pw_policy.sh), and
auto_remove_virtualbox_vms plus VBoxManage (pw_cleanup.sh).
Each grep now searches the entry script and its libs together, via a
pw_*.sh glob rather than a named lib, so a future re-partition does not
break them again. The sed extraction in the security test reads
pw_policy.sh directly, since it runs those two functions in isolation.
Deliberately left narrow: the two assert_order checks still target the
entry script alone. They assert the order of two call sites, and both
calls are still there -- widening them would turn a positional check
into a meaningless one. The 'CRITICAL near verify_policy_integrity' and
auto_remove_virtualbox_vms call-site greps were also left alone after
confirming they still match in the entry script.
Both files now exit 0. Of the two other suites still failing locally,
neither is from this commit: test_security_hardening's remaining failure
is this machine's unwrapped signal-desktop/discord and passes in CI, and
test_shutdown_timer_monitor is failing on the uncommitted
setup_midnight_shutdown split in the working tree.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
120 lines
4.5 KiB
Bash
Executable File
120 lines
4.5 KiB
Bash
Executable File
#!/bin/bash
|
|
# Pacman wrapper security: syntax, integrity and VirtualBox enforcement checks (tests 1-12).
|
|
# Sourced by test_pacman_wrapper_security.sh; inherits its strict mode
|
|
# (set -e) and its SCRIPT_DIR / WRAPPER_DIR / VBOX_DIR paths.
|
|
|
|
pac_tests_wrapper_and_vbox() {
|
|
# Test 1: Check wrapper syntax
|
|
echo "[TEST 1] Checking wrapper script syntax..."
|
|
if bash -n "$WRAPPER_DIR/pacman_wrapper.sh"; then
|
|
echo "✓ Wrapper script syntax is valid"
|
|
else
|
|
echo "✗ Wrapper script has syntax errors"
|
|
exit 1
|
|
fi
|
|
|
|
# Test 2: Check installer syntax
|
|
echo "[TEST 2] Checking installer script syntax..."
|
|
if bash -n "$WRAPPER_DIR/install_pacman_wrapper.sh"; then
|
|
echo "✓ Installer script syntax is valid"
|
|
else
|
|
echo "✗ Installer script has syntax errors"
|
|
exit 1
|
|
fi
|
|
|
|
# Test 3: Check VirtualBox enforcement script syntax
|
|
echo "[TEST 3] Checking VirtualBox enforcement script syntax..."
|
|
if bash -n "$VBOX_DIR/enforce_vbox_hosts.sh"; then
|
|
echo "✓ VirtualBox enforcement script syntax is valid"
|
|
else
|
|
echo "✗ VirtualBox enforcement script has syntax errors"
|
|
exit 1
|
|
fi
|
|
|
|
# The wrapper was split into flat pw_*.sh libs under the 250-line cap, so
|
|
# these definition checks search the entry script AND its libs: the
|
|
# functions moved one file over, they did not disappear.
|
|
# Test 4: Verify integrity check function exists
|
|
echo "[TEST 4] Verifying integrity check function exists in wrapper..."
|
|
if grep -q "verify_policy_integrity()" "$WRAPPER_DIR/pacman_wrapper.sh" "$WRAPPER_DIR"/pw_*.sh; then
|
|
echo "✓ Integrity verification function found"
|
|
else
|
|
echo "✗ Integrity verification function not found"
|
|
exit 1
|
|
fi
|
|
|
|
# Test 5: Verify hardcoded VirtualBox cleanup function exists
|
|
echo "[TEST 5] Verifying hardcoded VirtualBox cleanup function exists..."
|
|
if grep -q "auto_remove_virtualbox_vms()" "$WRAPPER_DIR/pacman_wrapper.sh" "$WRAPPER_DIR"/pw_*.sh; then
|
|
echo "✓ Hardcoded VirtualBox cleanup function found"
|
|
else
|
|
echo "✗ Hardcoded VirtualBox cleanup function not found"
|
|
exit 1
|
|
fi
|
|
|
|
# Test 6: Verify VirtualBox cleanup uses VBoxManage directly
|
|
echo "[TEST 6] Verifying VirtualBox cleanup uses VBoxManage directly..."
|
|
if grep -q "VBoxManage" "$WRAPPER_DIR/pacman_wrapper.sh" "$WRAPPER_DIR"/pw_*.sh; then
|
|
echo "✓ VirtualBox cleanup logic found"
|
|
else
|
|
echo "✗ VirtualBox cleanup logic not found"
|
|
exit 1
|
|
fi
|
|
|
|
# Test 7: Verify integrity check is called early in execution
|
|
echo "[TEST 7] Verifying integrity check is called before operations..."
|
|
if grep -B 2 -A 2 "verify_policy_integrity" "$WRAPPER_DIR/pacman_wrapper.sh" | grep -q "CRITICAL"; then
|
|
echo "✓ Integrity check is called early in execution"
|
|
else
|
|
echo "✗ Integrity check not found in early execution"
|
|
exit 1
|
|
fi
|
|
|
|
# Test 8: Verify installer creates integrity file
|
|
echo "[TEST 8] Verifying installer creates integrity checksums..."
|
|
if grep -qr "INTEGRITY_FILE" "$WRAPPER_DIR/install_pacman_wrapper.sh" "$WRAPPER_DIR/lib"; then
|
|
echo "✓ Installer references integrity file"
|
|
else
|
|
echo "✗ Installer does not create integrity file"
|
|
exit 1
|
|
fi
|
|
|
|
# Test 9: Verify installer uses chattr to make files immutable
|
|
echo "[TEST 9] Verifying installer makes policy files immutable..."
|
|
if grep -qr "chattr +i" "$WRAPPER_DIR/install_pacman_wrapper.sh" "$WRAPPER_DIR/lib"; then
|
|
echo "✓ Installer sets immutable attributes"
|
|
else
|
|
echo "✗ Installer does not set immutable attributes"
|
|
exit 1
|
|
fi
|
|
|
|
# Test 10: Verify VirtualBox cleanup enforcement is integrated
|
|
echo "[TEST 10] Verifying VirtualBox cleanup is integrated into wrapper..."
|
|
if grep -q "auto_remove_virtualbox_vms" "$WRAPPER_DIR/pacman_wrapper.sh"; then
|
|
echo "✓ VirtualBox cleanup integration found"
|
|
else
|
|
echo "✗ VirtualBox cleanup integration not found"
|
|
exit 1
|
|
fi
|
|
|
|
# Test 11: Verify VirtualBox script can show help
|
|
echo "[TEST 11] Testing VirtualBox enforcement script help..."
|
|
# Run without invoking sudo by setting EUID check (or just check for the help text in the file)
|
|
if grep -q "VirtualBox /etc/hosts Enforcement Tool" "$VBOX_DIR/enforce_vbox_hosts.sh"; then
|
|
echo "✓ VirtualBox enforcement script has help text"
|
|
else
|
|
echo "✗ VirtualBox enforcement script help text not found"
|
|
exit 1
|
|
fi
|
|
|
|
# Test 12: Verify installer installs VirtualBox enforcement script
|
|
echo "[TEST 12] Verifying installer handles VirtualBox enforcement script..."
|
|
if grep -qr "VBOX_ENFORCE" "$WRAPPER_DIR/install_pacman_wrapper.sh" "$WRAPPER_DIR/lib"; then
|
|
echo "✓ Installer includes VirtualBox enforcement script"
|
|
else
|
|
echo "✗ Installer does not include VirtualBox enforcement script"
|
|
exit 1
|
|
fi
|
|
|
|
}
|