in src/tpm_socket_comm.c [51:93]
static int add_to_buffer(TPM_SOCKET_INFO* socket_info, const unsigned char* bytes, size_t length)
{
int result;
unsigned char* new_buff;
if (socket_info->recv_bytes == NULL)
{
new_buff = (unsigned char*)malloc(length);
}
else
{
size_t realloc_size = safe_add_size_t(socket_info->recv_length, length);
if (realloc_size != SIZE_MAX)
{
new_buff = (unsigned char*)realloc(socket_info->recv_bytes, realloc_size);
}
else
{
new_buff = NULL;
}
}
if (new_buff == NULL)
{
result = MU_FAILURE;
}
else
{
size_t recv_length = safe_add_size_t(socket_info->recv_length, length);
if (recv_length != SIZE_MAX)
{
socket_info->recv_bytes = new_buff;
memcpy(socket_info->recv_bytes + socket_info->recv_length, bytes, length);
socket_info->recv_length = recv_length;
result = 0;
}
else
{
free(new_buff);
result = MU_FAILURE;
}
}
return result;
}