3 # For the license, see the LICENSE file in the root directory.
5 ROOT
=${abs_top_builddir:-$(dirname "$0")/..}
6 TESTDIR
=${abs_top_testdir:-$(dirname "$0")}
9 SWTPM_CTRL_UNIX_PATH
=$TPMDIR/sock
10 PID_FILE
=$TPMDIR/swtpm.pid
11 LOG_FILE
=$TPMDIR/swtpm.log
13 RESP_PATH
=$TPMDIR/resp
15 source ${TESTDIR}/test_common
17 trap "cleanup" SIGTERM EXIT
22 if [ -n "$PID" ]; then
23 kill_quiet
-SIGTERM $PID 2>/dev
/null
27 SWTPM_INTERFACE
=socket
+unix
28 SWTPM_SERVER_PORT
=65430
29 SWTPM_SERVER_NAME
=localhost
30 source ${TESTDIR}/common
32 # Test 1: test the control channel on the socket tpm
34 # OS X would not allow nobody to access the $TPMDIR easily; skip it
35 if [ $
(id
-u) -eq 0 ] && [ "$(uname -s)" != "Darwin" ]; then
36 FOWNER
=",uid=nobody,gid=$(id -Gn nobody | cut -d" " -f1)"
37 FILEOWNER
="$(id -u nobody) $(id -G nobody | cut -d" " -f1)"
40 if [[ "$(uname -s)" =~ CYGWIN_NT-
]]; then
52 # use a pseudo terminal
53 if [ -c /dev
/ptmx
]; then
55 elif [ -c /dev
/ptm
]; then
58 echo "Could not find chardev for opening file descriptor."
63 --tpmstate dir
=$TPMDIR \
64 --pid file=$PID_FILE \
65 --ctrl type=unixio
,path
=$SWTPM_CTRL_UNIX_PATH,mode
=${FILEMODE}${FOWNER} \
66 --log file=$LOG_FILE,level
=20 &
70 if wait_for_file
$PID_FILE 3; then
71 echo "Error: Socket TPM did not write pidfile."
75 PID
="$(cat $PID_FILE)"
77 # Get the capability bits: CMD_GET_CAPABILITY = 0x00 00 00 01
78 res
="$(swtpm_ctrl_tx ${SWTPM_INTERFACE} '\x00\x00\x00\x01')"
79 if [[ "$(uname -s)" =~
(Linux|OpenBSD|FreeBSD|NetBSD|Darwin|DragonFly
) ]]; then
80 exp
=" 00 00 00 00 00 00 7f ff"
82 exp
=" 00 00 00 00 00 00 6f ff"
84 if [ "$res" != "$exp" ]; then
85 echo "Error: Unexpected response from CMD_GET_CAPABILITY:"
87 echo " expected: $exp"
91 filemode
=$
(get_filemode
$SWTPM_CTRL_UNIX_PATH)
92 if [ "$filemode" != "$FILEMODE" ]; then
93 echo "Filemode bits are wrong"
94 echo "Expected: $FILEMODE"
95 echo "Actual : $filemode"
99 fileowner
=$
(get_fileowner
$SWTPM_CTRL_UNIX_PATH)
100 if [ -n "$FILEOWNER" ] && [ "$fileowner" != "$FILEOWNER" ]; then
101 echo "File ownership is wrong"
102 echo "Expected: $FILEOWNER"
103 echo "Actual : $fileowner"
107 # Send TPM_Init to the TPM: CMD_INIT = 0x00 00 00 02 + flags
108 res
="$(swtpm_ctrl_tx ${SWTPM_INTERFACE} '\x00\x00\x00\x02\x00\x00\x00\x00')"
110 if [ "$res" != "$exp" ]; then
111 echo "Error: Unexpected response from CMD_INIT:"
112 echo " actual : $res"
113 echo " expected: $exp"
117 # Send unknown command to the TPM
118 res
="$(swtpm_ctrl_tx ${SWTPM_INTERFACE} '\x00\x00\xff\xff')"
120 if [ "$res" != "$exp" ]; then
121 echo "Error: Unexpected response from sending unsupported command:"
122 echo " actual : $res"
123 echo " expected: $exp"
127 # Save the volatile state: CMD_STORE_VOLATILE = 0x00 00 00 0a
128 res
="$(swtpm_ctrl_tx ${SWTPM_INTERFACE} '\x00\x00\x00\x0a')"
130 if [ "$res" != "$exp" ]; then
131 echo "Error: Unexpected response from CMD_STORE_VOLATILE:"
132 echo " actual : $res"
133 echo " expected: $exp"
137 if [ ! -r $TPMDIR/tpm-00.volatilestate
]; then
138 echo "Error: Socket TPM: Did not write volatile state file"
142 # Send stop command to the TPM: CMD_STOP = 00 00 00 0e
143 res
="$(swtpm_ctrl_tx ${SWTPM_INTERFACE} '\x00\x00\x00\x0e')"
145 if [ "$res" != "$exp" ]; then
146 echo "Error: Socket TPM: Unexpected response from CMD_STOP:"
147 echo " actual : $res"
148 echo " expected: $exp"
152 # Send get config command to the TPM: CMD_GET_CONFIG = 00 00 00 0f
153 res
="$(swtpm_ctrl_tx ${SWTPM_INTERFACE} '\x00\x00\x00\x0f')"
154 exp
=" 00 00 00 00 00 00 00 00"
155 if [ "$res" != "$exp" ]; then
156 echo "Error: Socket TPM: Unexpected response from CMD_GET_CONFIG:"
157 echo " actual : $res"
158 echo " expected: $exp"
162 # Send shutdown command to the TPM: CMD_SHUTDOWN = 00 00 00 03
163 res
="$(swtpm_ctrl_tx ${SWTPM_INTERFACE} '\x00\x00\x00\x03')"
165 if [ "$res" != "$exp" ]; then
166 echo "Error: Unexpected response from CMD_SHUTDOWN:"
167 echo " actual : $res"
168 echo " expected: $exp"
172 if wait_file_gone
$PID_FILE 2; then
173 echo "Error: TPM should have removed PID file by now."
177 if wait_process_gone
${PID} 4; then
178 echo "Error: TPM should not be running anymore."
182 check_logfile_patterns_level_20
$LOG_FILE
187 # Test 2: test the control channel on the socket tpm
189 # There are a few more tests here that require sending commands to the TPM
191 # use a pseudo terminal
192 run_swtpm
${SWTPM_INTERFACE} \
193 --tpmstate dir
=$TPMDIR \
194 --pid file=$PID_FILE \
197 if wait_for_file
${PID_FILE} 4; then
198 echo "Error: Socket TPM did not write pidfile."
203 PID
="$(cat $PID_FILE)"
205 swtpm_open_cmddev
${SWTPM_INTERFACE} 100
207 # Get the capability bits: CMD_GET_CAPABILITY = 0x00 00 00 01
208 res
="$(swtpm_ctrl_tx ${SWTPM_INTERFACE} '\x00\x00\x00\x01')"
209 if [[ "$(uname -s)" =~
(Linux|OpenBSD|FreeBSD|NetBSD|Darwin|DragonFly
) ]]; then
210 exp
=" 00 00 00 00 00 00 7f ff"
212 exp
=" 00 00 00 00 00 00 6f ff"
214 if [ "$res" != "$exp" ]; then
215 echo "Error: Socket TPM: Unexpected response from CMD_GET_CAPABILITY:"
216 echo " actual : $res"
217 echo " expected: $exp"
221 # Send TPM_Init to the TPM: CMD_INIT = 0x00 00 00 02 + flags
222 res
="$(swtpm_ctrl_tx ${SWTPM_INTERFACE} '\x00\x00\x00\x02\x00\x00\x00\x00')"
224 if [ "$res" != "$exp" ]; then
225 echo "Error: Socket TPM: Unexpected response from CMD_INIT:"
226 echo " actual : $res"
227 echo " expected: $exp"
231 # Send unknown command to the TPM
232 res
="$(swtpm_ctrl_tx ${SWTPM_INTERFACE} '\x00\x00\xff\xff')"
234 if [ "$res" != "$exp" ]; then
235 echo "Error: Socket TPM: Unexpected response from sending unsupported command:"
236 echo " actual : $res"
237 echo " expected: $exp"
242 res
="$(swtpm_cmd_tx ${SWTPM_INTERFACE} '\x00\xC1\x00\x00\x00\x0C\x00\x00\x00\x99\x00\x01')"
243 exp
=' 00 c4 00 00 00 0a 00 00 00 00'
244 if [ "$res" != "$exp" ]; then
245 echo "Error: Did not get expected result from TPM_Startup(ST_Clear)"
246 echo "expected: $exp"
247 echo "received: $res"
251 # Save the volatile state: CMD_STORE_VOLATILE = 0x00 00 00 0a
252 res
="$(swtpm_ctrl_tx ${SWTPM_INTERFACE} '\x00\x00\x00\x0a')"
254 if [ "$res" != "$exp" ]; then
255 echo "Error: Socket TPM: Unexpected response from CMD_STORE_VOLATILE:"
256 echo " actual : $res"
257 echo " expected: $exp"
261 if [ ! -r $TPMDIR/tpm-00.volatilestate
]; then
262 echo "Error: Socket TPM: Did not write volatile state file"
266 # 1. Send command to get TPM established flag: CMD_GET_TPMESTABLISHED = 00 00 00 04
267 res
="$(swtpm_ctrl_tx ${SWTPM_INTERFACE} '\x00\x00\x00\x04')"
268 exp
=" 00 00 00 00 00 00 00 00"
269 if [ "$res" != "$exp" ]; then
270 echo "Error: Socket TPM: Unexpected response from sending CMD_GET_TPMESTABLISHED command:"
271 echo " actual : $res"
272 echo " expected: $exp"
276 # 2. Send command to start HASH : CMD_HASH_START = 00 00 00 06
277 res
="$(swtpm_ctrl_tx ${SWTPM_INTERFACE} '\x00\x00\x00\x06')"
279 if [ "$res" != "$exp" ]; then
280 echo "Error: Socket TPM: Unexpected response from sending CMD_HASH_START command:"
281 echo " actual : $res"
282 echo " expected: $exp"
286 # 2.1. Send command to hash data : CMD_HASH_DATA = 00 00 00 07 uint32(length) data
287 # We send 0x100 null bytes
288 echo -en '\x00\x00\x00\x07\x00\x00\x20\x00' > $CMD_PATH
289 dd if=/dev
/zero count
=$
((0x2000)) bs
=1 >> $CMD_PATH 2>/dev
/null
290 socat
-x -t10 FILE
:$CMD_PATH,rdonly UNIX-CONNECT
:$SWTPM_CTRL_UNIX_PATH 2>&1 | \
292 tail -n1 > $RESP_PATH
293 res
="$(cat $RESP_PATH)"
295 if [ "$res" != "$exp" ]; then
296 echo "Error: Socket TPM: Unexpected response from sending CMD_HASH_DATA command:"
297 echo " actual : $res"
298 echo " expected: $exp"
302 # 3. Send command to end HASH : CMD_HASH_END = 00 00 00 08
303 res
="$(swtpm_ctrl_tx ${SWTPM_INTERFACE} '\x00\x00\x00\x08')"
305 if [ "$res" != "$exp" ]; then
306 echo "Error: Socket TPM: Unexpected response from sending CMD_HASH_END command:"
307 echo " actual : $res"
308 echo " expected: $exp"
312 # 4. Send command to get TPM established flag: CMD_GET_TPMESTABLISHED = 00 00 00 04
313 res
="$(swtpm_ctrl_tx ${SWTPM_INTERFACE} '\x00\x00\x00\x04')"
314 exp
=" 00 00 00 00 01 00 00 00"
315 if [ "$res" != "$exp" ]; then
316 echo "Error: Socket TPM: Unexpected response from sending CMD_GET_TPMESTABLISHED command:"
317 echo " actual : $res"
318 echo " expected: $exp"
322 # 5. Send command to reset TPM established flag: CMD_RESET_TPMESTABLISHED = 00 00 00 0b 03
323 res
="$(swtpm_ctrl_tx ${SWTPM_INTERFACE} '\x00\x00\x00\x0b\x03')"
325 if [ "$res" != "$exp" ]; then
326 echo "Error: Socket TPM: Unexpected response from sending CMD_GET_TPMESTABLISHED command:"
327 echo " actual : $res"
328 echo " expected: $exp"
332 # 6. Send command to get TPM established flag: CMD_GET_TPMESTABLISHED = 00 00 00 04
333 res
="$(swtpm_ctrl_tx ${SWTPM_INTERFACE} '\x00\x00\x00\x04')"
334 exp
=" 00 00 00 00 00 00 00 00"
335 if [ "$res" != "$exp" ]; then
336 echo "Error: Socket TPM: Unexpected response from sending CMD_GET_TPMESTABLISHED command:"
337 echo " actual : $res"
338 echo " expected: $exp"
343 swtpm_open_cmddev
${SWTPM_INTERFACE} 100
344 res
="$(swtpm_cmd_tx ${SWTPM_INTERFACE} '\x00\xC1\x00\x00\x00\x0E\x00\x00\x00\x15\x00\x00\x00\x11')"
345 exp
=' 00 c4 00 00 00 1e 00 00 00 00 c4 e1 e1 c9 81 c0 cd b1 e0 43 df 97 20 72 f9 5d a9 ff 06 ff'
346 if [ "$res" != "$exp" ]; then
347 echo "Error: (1) Did not get expected result from TPM_PCRRead(17)"
348 echo "expected: $exp"
349 echo "received: $res"
353 # Get the volatile state of the TPM: CMD_GET_STATEBLOB = 00 00 00 0c
354 # cmd | flags | type | offset |
355 res
="$(swtpm_ctrl_tx ${SWTPM_INTERFACE} '\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00')"
356 # result | flags | totlength | length |
357 exp
=" 00 00 00 00 00 00 00 00 00 00 04 e5 00 00 04 e5"
358 if [ "${res:0:48}" != "$exp" ]; then
359 echo "Error: Socket TPM: Unexpected response from CMD_GET_STATEBLOB:"
360 echo " actual : $res"
361 echo " expected: $exp"
365 # Send stop command to the TPM: CMD_STOP = 00 00 00 0e
366 res
="$(swtpm_ctrl_tx ${SWTPM_INTERFACE} '\x00\x00\x00\x0e')"
368 if [ "$res" != "$exp" ]; then
369 echo "Error: Socket TPM: Unexpected response from CMD_STOP:"
370 echo " actual : $res"
371 echo " expected: $exp"
375 # Read PCR 17 -- should fail now
376 swtpm_open_cmddev
${SWTPM_INTERFACE} 100
377 res
="$(swtpm_cmd_tx ${SWTPM_INTERFACE} '\x00\xC1\x00\x00\x00\x0E\x00\x00\x00\x15\x00\x00\x00\x11')"
378 exp
=' 00 c4 00 00 00 0a 00 00 00 09'
379 if [ "$res" != "$exp" ]; then
380 echo "Error: (1) Did not get expected result from TPM_PCRRead(17)"
381 echo "expected: $exp"
382 echo "received: $res"
386 # Send get config command to the TPM: CMD_GET_CONFIG = 00 00 00 0f
387 res
="$(swtpm_ctrl_tx ${SWTPM_INTERFACE} '\x00\x00\x00\x0f')"
388 exp
=" 00 00 00 00 00 00 00 00"
389 if [ "$res" != "$exp" ]; then
390 echo "Error: Socket TPM: Unexpected response from CMD_GET_CONFIG:"
391 echo " actual : $res"
392 echo " expected: $exp"
396 # Send shutdown command to the TPM: CMD_SHUTDOWN = 00 00 00 03
397 res
="$(swtpm_ctrl_tx ${SWTPM_INTERFACE} '\x00\x00\x00\x03')"
399 if [ "$res" != "$exp" ]; then
400 echo "Error: Socket TPM: Unexpected response from CMD_SHUTDOWN:"
401 echo " actual : $res"
402 echo " expected: $exp"
406 if wait_file_gone
$PID_FILE 2; then
407 echo "Error: TPM should have removed PID file by now."
411 if wait_process_gone
${PID} 4; then
412 echo "Error: Socket TPM should not be running anymore."
416 # Expecting to see an error message for the unknown command
417 check_logfile_patterns_level_1
$LOG_FILE 1
422 # Test 3: test the control channel on the socket tpm: resume encrypted state
424 # copy all the state files
425 cp ${TESTDIR}/data
/tpmstate
2/* ${TPMDIR}
427 run_swtpm
${SWTPM_INTERFACE} \
428 --tpmstate dir
=$TPMDIR \
429 --pid file=$PID_FILE \
430 --key pwdfile
=${TESTDIR}/data
/tpmstate
2/pwdfile.txt
,kdf
=sha512 \
431 --log file=$LOG_FILE,level
=20 \
432 --flags not-need-init
434 if wait_for_file
$PID_FILE 3; then
435 echo "Error: Socket TPM did not write pidfile."
439 PID
="$(cat $PID_FILE)"
442 swtpm_open_cmddev
${SWTPM_INTERFACE} 100
443 res
="$(swtpm_cmd_tx ${SWTPM_INTERFACE} '\x00\xC1\x00\x00\x00\x0E\x00\x00\x00\x15\x00\x00\x00\x0a')"
444 exp
=' 00 c4 00 00 00 1e 00 00 00 00 c7 8a 6e 94 c7 3c 4d 7f c3 05 c8 a6 6b bf 15 45 f4 ed b7 a5'
445 if [ "$res" != "$exp" ]; then
446 echo "Error: (1) Did not get expected result from TPM_PCRRead(10)"
447 echo "expected: $exp"
448 echo "received: $res"
452 # Get the volatile state of the TPM: CMD_GET_STATEBLOB = 00 00 00 0c
453 # cmd | flags | type | offset |
454 vstate
="$(swtpm_ctrl_tx ${SWTPM_INTERFACE} '\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00')"
455 # result | flags | totlength | length |
456 exp
=" 00 00 00 00 00 00 00 02 00 00 05 22 00 00 05 22"
457 if [ "${vstate:0:48}" != "$exp" ]; then
458 echo "Error: Socket TPM: Unexpected response from CMD_GET_STATEBLOB:"
459 echo " actual : ${vstate:0:48}"
460 echo " expected: $exp"
464 # Send shutdown command to the TPM: CMD_SHUTDOWN = 00 00 00 03
465 res
="$(swtpm_ctrl_tx ${SWTPM_INTERFACE} '\x00\x00\x00\x03')"
467 if [ "$res" != "$exp" ]; then
468 echo "Error: Socket TPM: Unexpected response from CMD_SHUTDOWN:"
469 echo " actual : $res"
470 echo " expected: $exp"
474 if wait_file_gone
$PID_FILE 2; then
475 echo "Error: TPM should have removed PID file by now."
479 if wait_process_gone
${PID} 4; then
480 echo "Error: Socket TPM should not be running anymore."
484 check_logfile_patterns_level_20
$LOG_FILE
489 # remove volatile state
490 rm -f $TPMDIR/*.volatilestate
492 run_swtpm
${SWTPM_INTERFACE} \
493 --tpmstate dir
=$TPMDIR \
494 --pid file=$PID_FILE \
495 --key pwdfile
=${TESTDIR}/data
/tpmstate
2/pwdfile.txt
,kdf
=sha512 \
496 --log file=$LOG_FILE \
497 --flags not-need-init
499 if wait_for_file
$PID_FILE 3; then
500 echo "Error: Socket TPM did not write pidfile."
504 PID
="$(cat $PID_FILE)"
506 # Read PCR 10 -- this should fail now
507 swtpm_open_cmddev
${SWTPM_INTERFACE} 100
508 res
="$(swtpm_cmd_tx ${SWTPM_INTERFACE} '\x00\xC1\x00\x00\x00\x0E\x00\x00\x00\x15\x00\x00\x00\x0a')"
509 exp
=' 00 c4 00 00 00 0a 00 00 00 26'
510 if [ "$res" != "$exp" ]; then
511 echo "Error: (1) Did not get expected result from TPM_PCRRead(10)"
512 echo "expected: $exp"
513 echo "received: $res"
517 # Send stop command to the TPM: CMD_STOP = 00 00 00 0e
518 res
="$(swtpm_ctrl_tx ${SWTPM_INTERFACE} '\x00\x00\x00\x0e')"
520 if [ "$res" != "$exp" ]; then
521 echo "Error: Socket TPM: Unexpected response from CMD_STOP:"
522 echo " actual : $res"
523 echo " expected: $exp"
527 # Send the volatile state to the TPM (while it is stopped)
528 # | cmd | flags | type |
530 size
=$
((${#vstate} / 3))
531 size
=$
(printf "%08x" $size |
sed 's/\([0-9a-f]\{2\}\)/\\x\1/g')
532 vstate
=$
(echo "${vstate}" |
sed 's/ /\\x/g')
533 res
="$(swtpm_ctrl_tx ${SWTPM_INTERFACE} "\x00\x00\x00\x0d\x00\x00\x00\x02\x00\x00\x00\x02${size}${vstate}")"
535 if [ "$res" != "$exp" ]; then
536 echo "Error
: Socket TPM
: Unexpected response from CMD_SET_STATEBLOB
:"
537 echo " actual
: $res"
538 echo " expected
: $exp"
542 # Send init command to the TPM: CMD_INIT = 00 00 00 02
543 res="$
(swtpm_ctrl_tx
${SWTPM_INTERFACE} '\x00\x00\x00\x02\x00\x00\x00\x00')"
545 if [ "$res" != "$exp" ]; then
546 echo "Error
: Socket TPM
: Unexpected response from CMD_INIT
:"
547 echo " actual
: $res"
548 echo " expected
: $exp"
552 # Read PCR 10 -- has to return same result as before
553 swtpm_open_cmddev ${SWTPM_INTERFACE} 100
554 res="$
(swtpm_cmd_tx
${SWTPM_INTERFACE} '\x00\xC1\x00\x00\x00\x0E\x00\x00\x00\x15\x00\x00\x00\x0a')"
555 exp=' 00 c4 00 00 00 1e 00 00 00 00 c7 8a 6e 94 c7 3c 4d 7f c3 05 c8 a6 6b bf 15 45 f4 ed b7 a5'
556 if [ "$res" != "$exp" ]; then
557 echo "Error
: (1) Did not get expected result from TPM_PCRRead
(10)"
558 echo "expected
: $exp"
559 echo "received
: $res"
563 # Reset PCR 20 while in locality 0 -- should not work
564 swtpm_open_cmddev ${SWTPM_INTERFACE} 100
565 res="$
(swtpm_cmd_tx
${SWTPM_INTERFACE} '\x00\xC1\x00\x00\x00\x0F\x00\x00\x00\xC8\x00\x03\x00\x00\x10')"
566 exp=' 00 c4 00 00 00 0a 00 00 00 33'
567 if [ "$res" != "$exp" ]; then
568 echo "Error
: Trying to
reset PCR
20 in locality
0 returned unexpected result
"
569 echo "expected
: $exp"
570 echo "received
: $res"
574 # In locality 2 we can reset PCR 20
575 # Set the localoty on the TPM: CMD_SET_LOCALITY = 00 00 00 05 <locality>
576 res="$
(swtpm_ctrl_tx
${SWTPM_INTERFACE} '\x00\x00\x00\x05\x02')"
578 if [ "$res" != "$exp" ]; then
579 echo "Error
: Socket TPM
: Unexpected response from CMD_SET_LOCALITY
:"
580 echo " actual
: $res"
581 echo " expected
: $exp"
585 # Reset PCR 20 while in locality 2 -- has to work
586 swtpm_open_cmddev ${SWTPM_INTERFACE} 100
587 res="$
(swtpm_cmd_tx
${SWTPM_INTERFACE} '\x00\xC1\x00\x00\x00\x0F\x00\x00\x00\xC8\x00\x03\x00\x00\x10')"
588 exp=' 00 c4 00 00 00 0a 00 00 00 00'
589 if [ "$res" != "$exp" ]; then
590 echo "Error
: Could not
reset PCR
20 in locality
2"
591 echo "expected
: $exp"
592 echo "received
: $res"
596 # Send shutdown command to the TPM: CMD_SHUTDOWN = 00 00 00 03
597 res="$
(swtpm_ctrl_tx
${SWTPM_INTERFACE} '\x00\x00\x00\x03')"
599 if [ "$res" != "$exp" ]; then
600 echo "Error
: Socket TPM
: Unexpected response from CMD_SHUTDOWN
:"
601 echo " actual
: $res"
602 echo " expected
: $exp"
606 if wait_file_gone $PID_FILE 2; then
607 echo "Error
: TPM should have removed PID
file by now.
"
611 if wait_process_gone ${PID} 4; then
612 echo "Error
: Socket TPM should not be running anymore.
"
616 # (Currently) expecting to see nothing in the log file
617 check_logfile_patterns_level_1 $LOG_FILE 0