swtpm_setup: log errors from tcsd in logfile

Redirect stdout and stderr from tcsd into a file and if tcsd reported
an error copy the error into the logfile. This makes debugging tcsd
related issues, such as ownership or access mode issues, easier.

Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
This commit is contained in:
Stefan Berger 2020-07-23 00:42:52 -04:00 committed by Stefan Berger
parent 3b33116d97
commit 9d8d6d0378

View File

@ -502,7 +502,7 @@ start_tcsd()
{
local TCSD=$1
local user group ctr=0 ctr2
local user group ctr=0 ctr2 tmp tcsd_error_file
user=$(id -u -n)
group=$(id -g -n)
@ -516,9 +516,10 @@ start_tcsd()
TCSD_CONFIG="$(mktemp)"
TCSD_DATA_DIR="$(mktemp -d)"
TCSD_DATA_FILE="$(TMPDIR=${TCSD_DATA_DIR} mktemp)"
tcsd_error_file="$(TMPDIR=${TCSD_DATA_DIR} mktemp)"
if [ -z "$TCSD_CONFIG" ] || [ -z "$TCSD_DATA_DIR" ] || \
[ -z "$TCSD_DATA_FILE" ]; then
[ -z "$TCSD_DATA_FILE" ] || [ -z "$tcsd_error_file" ]; then
logerr "Could not create temporary file; TMPDIR=$TMPDIR"
return 1
fi
@ -547,7 +548,7 @@ EOF
# make sure tcsd is gone
stop_tcsd 1
TCSD_TCP_DEVICE_HOSTNAME=127.0.0.1 $TCSD -c "$TCSD_CONFIG" -e -f &>/dev/null &
TCSD_TCP_DEVICE_HOSTNAME=127.0.0.1 $TCSD -c "$TCSD_CONFIG" -e -f &>"$tcsd_error_file" &
TCSD_PID=$!
# poll for open port (good) or the process to have
@ -576,6 +577,11 @@ EOF
return 0
done
tmp="$(cat "$tcsd_error_file")"
if [ -n "$tmp" ]; then
logerr "tcsd error: $tmp"
fi
ctr=$((ctr + 1))
done