in src/tpm_socket_comm.c [251:284]
int tpm_socket_read(TPM_SOCKET_HANDLE handle, unsigned char* tpm_bytes, uint32_t bytes_len)
{
int result;
if (handle == NULL || tpm_bytes == NULL || bytes_len == 0)
{
LogError("Invalid argument specified handle: %p, tpm_bytes: %p, bytes_len: %d", handle, tpm_bytes, bytes_len);
result = MU_FAILURE;
}
else
{
// Do we have enough bytes cached
result = MU_FAILURE;
for (size_t index = 0; index < 2; index++)
{
if (handle->recv_length >= bytes_len)
{
memcpy(tpm_bytes, handle->recv_bytes, bytes_len);
remove_from_buffer(handle, bytes_len);
result = 0;
break;
}
else
{
if (read_socket_bytes(handle))
{
LogError("Failure reading socket bytes.");
result = MU_FAILURE;
break;
}
}
}
}
return result;
}