]> git.proxmox.com Git - swtpm.git/commitdiff
tests: Allow seccomp override w/ SWTPM_TEST_SECCOMP_OPT env var
authorStefan Berger <stefanb@linux.ibm.com>
Wed, 15 Jan 2020 01:29:49 +0000 (20:29 -0500)
committerStefan Berger <stefanb@us.ibm.com>
Wed, 15 Jan 2020 20:49:51 +0000 (15:49 -0500)
The Ubuntu (PPA) build system executes the build on an environment that
has problems with seccomp profiles. It does not allow us to run the test
suite with swtpm applying its seccomp profile since it fails with a
'bad system call' error. To work around this we introduce the env. variable
SWTPM_TEST_SECCOMP_OPT that we can set to "--seccomp action=none" to avoid
having swtpm apply it seccomp profile.

Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
18 files changed:
tests/_test_init
tests/_test_tpm2_init
tests/common
tests/test_clientfds.py
tests/test_commandline
tests/test_ctrlchannel
tests/test_ctrlchannel2
tests/test_ctrlchannel3
tests/test_ctrlchannel4
tests/test_parameters
tests/test_samples_create_tpmca
tests/test_swtpm_setup_create_cert
tests/test_tpm2_ctrlchannel2
tests/test_tpm2_parameters
tests/test_tpm2_save_load_state_3
tests/test_tpm2_swtpm_setup_create_cert
tests/test_tpm2_vtpm_proxy
tests/test_vtpm_proxy

index 96d0fdec6ef23aff4113cdcc47514c4f5cf15504..8dd00eda73b813b18d5485e1e93448191e039d09 100755 (executable)
@@ -33,13 +33,12 @@ source ${TESTDIR}/common
 rm -f $STATE_FILE $VOLATILE_STATE_FILE 2>/dev/null
 
 if has_seccomp_support "${SWTPM_EXE}"; then
-       seccomp_params="--seccomp action=none"
+       SWTPM_TEST_SECCOMP_OPT="--seccomp action=none"
 fi
 
 run_swtpm ${SWTPM_INTERFACE} \
        --tpmstate dir=$TPM_PATH \
-       --pid file=$PID_FILE \
-       ${seccomp_params}
+       --pid file=$PID_FILE
 
 display_processes_by_name "$SWTPM"
 
index b0391beccd929ce3bc0fcbf60d4ea494330c9b0f..bc3189c467a256af6edaf1052a3a5870aee1f28b 100755 (executable)
@@ -32,10 +32,10 @@ source ${TESTDIR}/common
 rm -f $STATE_FILE $VOLATILE_STATE_FILE 2>/dev/null
 
 if has_seccomp_support "${SWTPM_EXE}"; then
-       seccomp_params="--seccomp action=none"
+       SWTPM_TEST_SECCOMP_OPT="--seccomp action=none"
 fi
 
-run_swtpm ${SWTPM_INTERFACE} --tpm2 ${seccomp_params}
+run_swtpm ${SWTPM_INTERFACE} --tpm2
 
 display_processes_by_name "$SWTPM"
 
index 000f66aa7fd244ddeca27547a063bb64a1249ce6..16dc5dc0b6c9d8a197f1ca3fd2b1243205dae3a4 100644 (file)
@@ -307,7 +307,8 @@ function run_swtpm()
                        exit 1
                fi
 
-               ${SWTPM_EXE} cuse $@ -n ${SWTPM_DEV_NAME##*/}
+               ${SWTPM_EXE} cuse $@ ${SWTPM_TEST_SECCOMP_OPT} \
+                       -n ${SWTPM_DEV_NAME##*/}
                rc=$?
                if [ $rc -ne 0 ]; then
                        echo "Could not run ${SWTPM_EXE} using ${iface}"
@@ -345,6 +346,7 @@ function run_swtpm()
                fi
 
                ${SWTPM_EXE} socket $@ \
+                       ${SWTPM_TEST_SECCOMP_OPT} \
                        --server type=tcp,port=${SWTPM_SERVER_PORT}${swtpm_server_disconnect} \
                        --ctrl type=tcp,port=${SWTPM_CTRL_PORT} &
                rc=$?
@@ -385,6 +387,7 @@ function run_swtpm()
                fi
 
                ${SWTPM_EXE} socket $@ \
+                       ${SWTPM_TEST_SECCOMP_OPT} \
                        --server type=tcp,port=${SWTPM_SERVER_PORT}${swtpm_server_disconnect} \
                        --ctrl type=unixio,path=${SWTPM_CTRL_UNIX_PATH} &
                rc=$?
@@ -426,6 +429,7 @@ function run_swtpm()
                fi
 
                ${SWTPM_EXE} socket $@ \
+                       ${SWTPM_TEST_SECCOMP_OPT} \
                        --server type=unixio,path=${SWTPM_CMD_UNIX_PATH} \
                        --ctrl type=tcp,port=${SWTPM_CTRL_PORT} &
                rc=$?
@@ -466,6 +470,7 @@ function run_swtpm()
                fi
 
                ${SWTPM_EXE} socket $@ \
+                       ${SWTPM_TEST_SECCOMP_OPT} \
                        --server type=unixio,path=${SWTPM_CMD_UNIX_PATH} \
                        --ctrl type=unixio,path=${SWTPM_CTRL_UNIX_PATH} &
                rc=$?
@@ -754,6 +759,9 @@ function check_seccomp_profile()
        if ! has_seccomp_support "${swtpm_exe}"; then
                return 0
        fi
+       if [ -n "${SWTPM_TEST_SECCOMP_OPT}" ]; then
+               return 0
+       fi
 
        tmp=$(grep -E "^Seccomp" /proc/self/status |
                cut -d":" -f2 |
index 62997276bdaf6ee300298e21840513c8d7d169fa..9275a14fb7d6504f4b5fa0823e33092786abe4d1 100755 (executable)
@@ -40,6 +40,8 @@ def spawn_swtpm():
     cmd = swtpm_exe + " socket --fd=" + str(_fd.fileno())
     cmd += " --ctrl type=unixio,clientfd=" + str(_ctrlfd.fileno())
     cmd += " --pid file=" + pidfile + " --tpmstate dir=" + tpmpath
+    if os.getenv('SWTPM_TEST_SECCOMP_OPT'):
+        cmd += " " + os.getenv('SWTPM_TEST_SECCOMP_OPT')
     print("Running child cmd: %s" % cmd)
     try:
         if sys.version_info[0] >= 3:
index 6024c7f9e80f6e8681d295787279f363b3e72102..a1bd9ea8accdc3a7391781a0b8ad7a38665004b7 100755 (executable)
@@ -39,7 +39,8 @@ $SWTPM_EXE socket \
        --tpmstate dir=$TPMDIR,mode=$FILEMODE \
        --pid file=$PID_FILE \
        --log fd=100,level=20 \
-       --flags not-need-init &
+       --flags not-need-init \
+       ${SWTPM_TEST_SECCOMP_OPT} &
 PID=$!
 exec 100>&-
 
@@ -99,7 +100,12 @@ cleanup
 #         that causes the swtpm process to exit upon connection close
 TPMDIR=`mktemp -d`
 
-$SWTPM_EXE socket --flags not-need-init -p $PORT --tpmstate dir=$TPMDIR -t &>/dev/null &
+$SWTPM_EXE socket \
+       --flags not-need-init \
+       -p $PORT \
+       --tpmstate dir=$TPMDIR \
+       -t \
+       ${SWTPM_TEST_SECCOMP_OPT} &>/dev/null &
 PID=$!
 
 if wait_port_open $PORT $PID 4; then
index 564498d921ecde9bb3fee57037c7f5bf69a82676..3d1deae39d78034f65e3672e2c15a17d8e3f8761 100755 (executable)
@@ -81,7 +81,8 @@ $SWTPM_EXE socket \
        --pid $PIDPARAM \
        --ctrl type=unixio,path=$SWTPM_CTRL_UNIX_PATH,mode=${FILEMODE}${FOWNER} \
        --log file=$LOG_FILE,level=20 \
-       $RUNAS &
+       $RUNAS \
+       ${SWTPM_TEST_SECCOMP_OPT} &
 PID=$!
 exec 100>&-
 exec 101>&-
index 902c6e1afaa7c7b2be3ccedeee8fa22a36a1a74a..9819aef686d7e3ebc1b57dfd0fb635f16578326b 100755 (executable)
@@ -31,7 +31,12 @@ function cleanup()
 
 # use a pseudo terminal
 exec 100<>/dev/ptmx
-$SWTPM_EXE chardev --fd 100 --tpmstate dir=$TPMDIR --pid file=$PID_FILE --ctrl type=unixio,path=$SOCK_PATH &
+$SWTPM_EXE chardev \
+       --fd 100 \
+       --tpmstate dir=$TPMDIR \
+       --pid file=$PID_FILE \
+       --ctrl type=unixio,path=$SOCK_PATH \
+       ${SWTPM_TEST_SECCOMP_OPT} &
 PID=$!
 
 if wait_for_file $PID_FILE 3; then
@@ -129,7 +134,8 @@ $SWTPM_EXE socket \
        --server port=65431,disconnect=true,bindaddr=$BINDADDR \
        --tpmstate dir=$TPMDIR \
        --pid file=$PID_FILE \
-       --ctrl type=unixio,path=$SOCK_PATH &
+       --ctrl type=unixio,path=$SOCK_PATH \
+       ${SWTPM_TEST_SECCOMP_OPT} &
 PID=$!
 
 if wait_for_file $PID_FILE 3; then
@@ -316,7 +322,8 @@ $SWTPM_EXE socket \
        --pid file=$PID_FILE \
        --ctrl type=unixio,path=$SOCK_PATH \
        --key pwdfile=${TESTDIR}/data/tpmstate2/pwdfile.txt,kdf=sha512 \
-       --flags not-need-init &
+       --flags not-need-init \
+       ${SWTPM_TEST_SECCOMP_OPT} &
 PID=$!
 
 if wait_for_file $PID_FILE 3; then
@@ -372,7 +379,8 @@ $SWTPM_EXE socket \
        --pid file=$PID_FILE \
        --ctrl type=unixio,path=$SOCK_PATH \
        --key pwdfile=${TESTDIR}/data/tpmstate2/pwdfile.txt,kdf=sha512 \
-       --flags not-need-init &
+       --flags not-need-init \
+       ${SWTPM_TEST_SECCOMP_OPT} &
 PID=$!
 
 if wait_for_file $PID_FILE 3; then
index 708c626ec289a95b871b539d5bb99cffae222cef..becccc643bf2a8f85e71f2bc9b0ca31d98a55d5e 100755 (executable)
@@ -37,7 +37,8 @@ $SWTPM_EXE socket \
        --tpmstate dir=$TPMDIR \
        -t \
        --pid file=$PID_FILE \
-       --log file=$LOG_FILE,level=20 &
+       --log file=$LOG_FILE,level=20 \
+       ${SWTPM_TEST_SECCOMP_OPT} &
 PID=$!
 
 if wait_for_file $PID_FILE 3; then
index 1719631d59b6496c5568a5e7d558475580905696..2fa035cfcd3880d08a24f53fb6977fdbd6cf5cd0 100755 (executable)
@@ -33,7 +33,8 @@ $SWTPM_EXE chardev \
        --tpmstate dir=$TPMDIR \
        --pid file=$PID_FILE \
        --ctrl type=unixio,path=$SWTPM_CTRL_UNIX_PATH \
-       --log file=$LOG_FILE,level=20 &
+       --log file=$LOG_FILE,level=20 \
+       ${SWTPM_TEST_SECCOMP_OPT} &
 
 exec 100>&-
 
index 8eb476399697dbd2e5d7e3bb9473c1eceeb0c370..8b155f427749b579b3a91afd70ee4815f38ebf76 100755 (executable)
@@ -107,7 +107,7 @@ for (( i=0; i<${#PARAMETERS[*]}; i++)); do
        echo -n "Test $i: "
        $TPMAUTHORING \
                --tpm-state $TPMDIR \
-               --tpm "$SWTPM_EXE socket" \
+               --tpm "$SWTPM_EXE socket ${SWTPM_TEST_SECCOMP_OPT}" \
                --swtpm_ioctl "$SWTPM_IOCTL" \
                ${PARAMETERS[$i]} 2>&1 >/dev/null
        
index 6fc0788d1b6c67017eae63b633998f79706998be..78bc6ba132228d788224b649584077c9fefbf45b 100755 (executable)
@@ -104,7 +104,7 @@ _EOF_
                --tpm-state ${workdir} \
                --logfile ${workdir}/logfile \
                --config ${workdir}/swtpm_setup.conf \
-               --tpm "${SWTPM_EXE} socket" \
+               --tpm "${SWTPM_EXE} socket ${SWTPM_TEST_SECCOMP_OPT}" \
                --swtpm_ioctl ${SWTPM_IOCTL} \
                --take-ownership \
                ${params} \
index 3637ee700160b754c11d3ee2acaa8634abfb827f..d90627f97c656183c5da431efc5550acae6b5d21 100755 (executable)
@@ -70,7 +70,7 @@ $SWTPM_SETUP \
        --create-ek-cert \
        --config ${workdir}/swtpm_setup.conf \
        --logfile ${workdir}/logfile \
-       --tpm "${SWTPM} socket" \
+       --tpm "${SWTPM} socket ${SWTPM_TEST_SECCOMP_OPT}" \
        --swtpm_ioctl ${SWTPM_IOCTL}
 
 if [ $? -ne 0 ]; then
index 63e97998e6591e2ae7cb2a1a3d064b7cd41334e4..c270fb0310de47ec7fc8b0313bfb7794adb280e9 100755 (executable)
@@ -43,7 +43,8 @@ $SWTPM_EXE chardev \
        --tpmstate dir=$TPMDIR \
        --pid file=$PID_FILE \
        --ctrl type=unixio,path=$SOCK_PATH,mode=${FILEMODE}${FOWNER} \
-       --tpm2 &
+       --tpm2 \
+       ${SWTPM_TEST_SECCOMP_OPT} &
 PID=$!
 
 if wait_for_file $PID_FILE 3; then
@@ -151,7 +152,8 @@ $SWTPM_EXE socket \
        --pid file=$PID_FILE \
        --ctrl type=unixio,path=$SOCK_PATH \
        --log file=$LOGFILE,level=20 \
-       --tpm2 &
+       --tpm2 \
+       ${SWTPM_TEST_SECCOMP_OPT} &
 PID=$!
 
 if wait_for_file $PID_FILE 3; then
@@ -347,7 +349,8 @@ $SWTPM_EXE socket \
        --ctrl type=unixio,path=$SOCK_PATH \
        --key pwdfile=${TESTDIR}/data/tpm2state2/pwdfile.txt,kdf=sha512 \
        --tpm2 \
-       --flags not-need-init &
+       --flags not-need-init \
+       ${SWTPM_TEST_SECCOMP_OPT} &
 PID=$!
 
 if wait_for_file $PID_FILE 3; then
@@ -405,7 +408,8 @@ $SWTPM_EXE socket \
        --ctrl type=unixio,path=$SOCK_PATH \
        --key pwdfile=${TESTDIR}/data/tpm2state2/pwdfile.txt,kdf=sha512 \
        --tpm2 \
-       --flags not-need-init &
+       --flags not-need-init \
+       ${SWTPM_TEST_SECCOMP_OPT} &
 PID=$!
 
 if wait_for_file $PID_FILE 3; then
index 9097dc69545abdfba83ea3d5f2c4e0849ff96b3f..cd62d9dcb85676af40cc7397fb1439eebb38b366 100755 (executable)
@@ -80,7 +80,7 @@ for (( i=0; i<${#PARAMETERS[*]}; i++)); do
        echo -n "Test $i: "
        $TPMAUTHORING \
                --tpm-state $TPMDIR \
-               --tpm "$SWTPM_EXE socket" \
+               --tpm "$SWTPM_EXE socket ${SWTPM_TEST_SECCOMP_OPT}" \
                --swtpm_ioctl "$SWTPM_IOCTL" \
                ${PARAMETERS[$i]} 2>&1 >/dev/null
 
index 4d532c134accfeee102589dfcf7b65e54c98651e..792e0a121c9d985bd4bc1342e1eb3b9d0aca98e1 100755 (executable)
@@ -681,7 +681,8 @@ $SWTPM_EXE socket \
        --pid file=$PID_FILE \
        --ctrl type=unixio,path=$SOCK_PATH \
        --log file=$LOGFILE,level=20 \
-       --tpm2 &
+       --tpm2 \
+       ${SWTPM_TEST_SECCOMP_OPT} &
 
 if wait_for_file $PID_FILE 3; then
        echo "Error: (1) Socket TPM did not write pidfile."
@@ -739,7 +740,8 @@ $SWTPM_EXE socket \
        --pid file=$PID_FILE \
        --ctrl type=unixio,path=$SOCK_PATH \
        --log file=$LOGFILE,level=20 \
-       --tpm2 &
+       --tpm2 \
+       ${SWTPM_TEST_SECCOMP_OPT} &
 
 if wait_for_file $PID_FILE 3; then
        echo "Error: (2) Socket TPM did not write pidfile."
@@ -799,7 +801,8 @@ $SWTPM_EXE socket \
        --pid file=$PID_FILE \
        --ctrl type=unixio,path=$SOCK_PATH \
        --log file=$LOGFILE,level=20 \
-       --tpm2 &
+       --tpm2 \
+       ${SWTPM_TEST_SECCOMP_OPT} &
 
 if wait_for_file $PID_FILE 3; then
        echo "Error: (3) Socket TPM did not write pidfile."
@@ -859,7 +862,8 @@ $SWTPM_EXE socket \
        --pid file=$PID_FILE \
        --ctrl type=unixio,path=$SOCK_PATH \
        --log file=$LOGFILE,level=20 \
-       --tpm2 &
+       --tpm2 \
+       ${SWTPM_TEST_SECCOMP_OPT} &
 
 if wait_for_file $PID_FILE 3; then
        echo "Error: (3) Socket TPM did not write pidfile."
@@ -920,7 +924,8 @@ $SWTPM_EXE socket \
        --pid file=$PID_FILE \
        --ctrl type=unixio,path=$SOCK_PATH \
        --log file=$LOGFILE,level=20 \
-       --tpm2 &
+       --tpm2 \
+       ${SWTPM_TEST_SECCOMP_OPT} &
 
 if wait_for_file $PID_FILE 3; then
        echo "Error: (3) Socket TPM did not write pidfile."
@@ -969,7 +974,8 @@ $SWTPM_EXE socket \
        --pid file=$PID_FILE \
        --ctrl type=unixio,path=$SOCK_PATH \
        --log file=$LOGFILE,level=20 \
-       --tpm2 &
+       --tpm2 \
+       ${SWTPM_TEST_SECCOMP_OPT} &
 
 if wait_for_file $PID_FILE 3; then
        echo "Error: (3) Socket TPM did not write pidfile."
@@ -1014,7 +1020,8 @@ $SWTPM_EXE socket \
        --pid file=$PID_FILE \
        --ctrl type=unixio,path=$SOCK_PATH \
        --log file=$LOGFILE,level=20 \
-       --tpm2 &
+       --tpm2 \
+       ${SWTPM_TEST_SECCOMP_OPT} &
 
 if wait_for_file $PID_FILE 3; then
        echo "Error: (3) Socket TPM did not write pidfile."
@@ -1075,7 +1082,8 @@ $SWTPM_EXE socket \
        --pid file=$PID_FILE \
        --ctrl type=unixio,path=$SOCK_PATH \
        --log file=$LOGFILE,level=20 \
-       --tpm2 &
+       --tpm2 \
+       ${SWTPM_TEST_SECCOMP_OPT} &
 
 if wait_for_file $PID_FILE 3; then
        echo "Error: (3) Socket TPM did not write pidfile."
@@ -1124,7 +1132,8 @@ $SWTPM_EXE socket \
        --pid file=$PID_FILE \
        --ctrl type=unixio,path=$SOCK_PATH \
        --log file=$LOGFILE,level=20 \
-       --tpm2 &
+       --tpm2 \
+       ${SWTPM_TEST_SECCOMP_OPT} &
 
 if wait_for_file $PID_FILE 3; then
        echo "Error: (3) Socket TPM did not write pidfile."
@@ -1168,7 +1177,8 @@ $SWTPM_EXE socket \
        --pid file=$PID_FILE \
        --ctrl type=unixio,path=$SOCK_PATH \
        --log file=$LOGFILE,level=20 \
-       --tpm2 &
+       --tpm2 \
+       ${SWTPM_TEST_SECCOMP_OPT} &
 
 if wait_for_file $PID_FILE 3; then
        echo "Error: (3) Socket TPM did not write pidfile."
@@ -1229,7 +1239,8 @@ $SWTPM_EXE socket \
        --pid file=$PID_FILE \
        --ctrl type=unixio,path=$SOCK_PATH \
        --log file=$LOGFILE,level=20 \
-       --tpm2 &
+       --tpm2 \
+       ${SWTPM_TEST_SECCOMP_OPT} &
 
 if wait_for_file $PID_FILE 3; then
        echo "Error: (3) Socket TPM did not write pidfile."
@@ -1275,7 +1286,8 @@ $SWTPM_EXE socket \
        --pid file=$PID_FILE \
        --ctrl type=unixio,path=$SOCK_PATH \
        --log file=$LOGFILE,level=20 \
-       --tpm2 &
+       --tpm2 \
+       ${SWTPM_TEST_SECCOMP_OPT} &
 
 if wait_for_file $PID_FILE 3; then
        echo "Error: (3) Socket TPM did not write pidfile."
index 93a93f80bded1d4d4709e87eaea234083a301a46..b3b85ad3f4f6c4c2a5aa6fcf27a054d6656f84f7 100755 (executable)
@@ -70,7 +70,7 @@ $SWTPM_SETUP \
        --create-platform-cert \
        --config ${workdir}/swtpm_setup.conf \
        --logfile ${workdir}/logfile \
-       --tpm "${SWTPM} socket" \
+       --tpm "${SWTPM} socket ${SWTPM_TEST_SECCOMP_OPT}" \
        --swtpm_ioctl ${SWTPM_IOCTL}
 
 if [ $? -ne 0 ]; then
@@ -107,7 +107,7 @@ $SWTPM_SETUP \
        --create-ek-cert \
        --config ${workdir}/swtpm_setup.conf \
        --logfile ${workdir}/logfile \
-       --tpm "${SWTPM} socket" \
+       --tpm "${SWTPM} socket ${SWTPM_TEST_SECCOMP_OPT}" \
        --swtpm_ioctl ${SWTPM_IOCTL} \
        --overwrite
 
index 334a16a0af1f9ac194379f0f41850235b69e050c..7dd506c65941c2423df2038ab3f7610b4c047189 100755 (executable)
@@ -38,7 +38,13 @@ source ${TESTDIR}/load_vtpm_proxy
 
 rm -f $STATE_FILE $VOLATILE_STATE_FILE 2>/dev/null
 
-$SWTPM_EXE chardev --tpm2 --vtpm-proxy --tpmstate dir=$TPM_PATH --ctrl type=unixio,path=$SOCK_PATH --pid file=$PID_FILE &>$LOGFILE &
+$SWTPM_EXE chardev \
+       --tpm2 \
+       --vtpm-proxy \
+       --tpmstate dir=$TPM_PATH \
+       --ctrl type=unixio,path=$SOCK_PATH \
+       --pid file=$PID_FILE \
+       ${SWTPM_TEST_SECCOMP_OPT} &>$LOGFILE &
 sleep 0.5
 PID=$(ps aux | grep $SWTPM | grep -E " file=${PID_FILE}\$" | gawk '{print $2}')
 
index 0adff85fd2d17afdd841d9885acea6aadd60d47c..e9dc33211f7a609b90bb76cb8a268fc0dbc0c28b 100755 (executable)
@@ -41,7 +41,8 @@ rm -f $STATE_FILE $VOLATILE_STATE_FILE 2>/dev/null
 $SWTPM_EXE chardev --vtpm-proxy \
        --tpmstate dir=$TPM_PATH \
        --ctrl type=unixio,path=$SOCK_PATH \
-       --pid file=$PID_FILE &>$LOGFILE &
+       --pid file=$PID_FILE \
+       ${SWTPM_TEST_SECCOMP_OPT} &>$LOGFILE &
 sleep 0.5
 PID=$(ps aux | grep $SWTPM | grep -E " file=${PID_FILE}\$" | gawk '{print $2}')