In case swtpm was to return a control channel message with an error code it
would often return less bytes than the full response. In some cases the
current reading of the returned bytes would get stuck since more bytes are
expected. Therefore, pass a separate parameter indicating how many bytes to
expect in case of an error and read that many bytes in a first pass. Check
for an error code in the first 4 bytes. Read the rest in a 2nd pass.
Stefan
v3:
- 2/2: Pass size of return response for error as parameter
v2:
- 2/2: Added special handling of CMD_GET_STATEBLOB
Stefan Berger (2):
tpm: Use new ptm_cap_n structure for PTM_GET_CAPABILITY
tpm_emulator: Read control channel response in 2 passes
backends/tpm/tpm_emulator.c | 77 +++++++++++++++++++++++++++----------
backends/tpm/tpm_ioctl.h | 13 ++++++-
backends/tpm/trace-events | 2 +-
3 files changed, 69 insertions(+), 23 deletions(-)
--
2.47.0