#!/usr/bin/env bash if ! [[ "$(uname -s)" =~ Linux ]]; then echo "This test currently only runs on Linux." exit 77 fi if [ "$(id -u)" -ne 0 ]; then echo "Need to be root to run this test." exit 77 fi STATEDIR="$(mktemp -d)" || exit 1 STATEIMG=$STATEDIR/tpm2.img STATEFILE="" trap "cleanup" SIGTERM EXIT function cleanup() { rm -rf "$STATEDIR" if [ -n "$STATEFILE" ]; then losetup -d "$STATEFILE" fi } if [ -z "$(type -P fallocate)" ]; then echo "This test requires the fallocate tool." exit 77 fi if ! fallocate --help 2>&1 | grep -q -E "\--posix"; then echo "This test requires fallocate to support --posix." exit 77 fi if [ -z "$(type -P losetup)" ]; then echo "This test requires the losetup tool." exit 77 fi # allocate 4 MiB file fallocate --posix -l $((4 * 1024 * 1024)) "$STATEIMG" # and loop mount it STATEFILE=$(losetup --show -f "$STATEIMG") export SWTPM_TEST_LINEAR_FILE=1 export TPM_COMMAND_PORT=65462 export STATEFILE # don't exec so cleanup will remove the loop device "$(dirname "$0")/test_tpm2_save_load_state_2"