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 step. Check for an error code in the first 4 bytes and return if there is an error. Read the rest in a 2nd step, if needed.
Stefan 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 | 73 ++++++++++++++++++++++++++----------- backends/tpm/tpm_ioctl.h | 13 ++++++- backends/tpm/trace-events | 2 +- 3 files changed, 65 insertions(+), 23 deletions(-) -- 2.47.0