diff --git a/test/tpm_test/tpmtest.py b/test/tpm_test/tpmtest.py index 09cf8fdc2d..a774e4913e 100755 --- a/test/tpm_test/tpmtest.py +++ b/test/tpm_test/tpmtest.py @@ -73,7 +73,12 @@ class TPM(object): if size > 4096: raise subcmd.TpmTestError(prefix + 'invalid size %d' % size) if response_mode: - return + # Startup response code or extension command response code + if cmd_code == 0x100 or cmd_code == 0: + return + else: + raise subcmd.TpmTestError( + prefix + 'invalid command code 0x%x' % cmd_code) if cmd_code >= 0x11f and cmd_code <= 0x18f: return # This is a valid command if cmd_code == EXT_CMD: @@ -111,16 +116,16 @@ class TPM(object): error message describes the problem. """ header_size = struct.calcsize(self.HEADER_FMT) - tag, size, cmd, subcmd = struct.unpack(self.HEADER_FMT, + tag, size, cmd, sub = struct.unpack(self.HEADER_FMT, response[:header_size]) if tag != 0x8001: raise subcmd.TpmTestError('Wrong response tag: %4.4x' % tag) - if cmd != EXT_CMD: + if cmd: raise subcmd.TpmTestError('Unexpected response command field: %8.8x' % cmd) - if subcmd != expected_subcmd: + if sub != expected_subcmd: raise subcmd.TpmTestError('Unexpected response subcommand field: %2.2x' % - subcmd) + sub) if size != len(response): raise subcmd.TpmTestError('Size mismatch: header %d, actual %d' % ( size, len(response)))