static int add_to_buffer()

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;
}