[prev in list] [next in list] [prev in thread] [next in thread] 

List:       wine-devel
Subject:    Re: [5/6] secur32: Implement schannel EncryptMessage().
From:       "Henri Verbeet" <hverbeet () gmail ! com>
Date:       2008-12-29 11:34:25
Message-ID: d658b69e0812290334p4034fdd4lbad1e3f8935181c3 () mail ! gmail ! com
[Download RAW message or body]

2008/12/29 Rob Shearman <robertshearman@gmail.com>:
> 2008/12/28 Henri Verbeet <hverbeet@gmail.com>:
>> +    while (received < data_size)
>> +    {
>> +        ret = pgnutls_record_recv(ctx->session, data + received, data_size - received);
>> +        if (ret < 0)
>> +        {
>> +            if (ret == GNUTLS_E_AGAIN)
>> +            {
>> +                if (!received)
>
> Shouldn't this be "if (received == data_size)"?
>
>> +                {
>> +                    pgnutls_perror(ret);
>> +                    HeapFree(GetProcessHeap(), 0, data);
>> +                    TRACE("Returning SEC_E_INCOMPLETE_MESSAGE\n");
>> +                    return SEC_E_INCOMPLETE_MESSAGE;
>> +                }
>> +                break;
>> +            }
>> +            else
>> +            {
>> +                pgnutls_perror(ret);
>> +                HeapFree(GetProcessHeap(), 0, data);
>> +                ERR("Returning SEC_E_INTERNAL_ERROR\n");
>> +                return SEC_E_INTERNAL_ERROR;
>> +            }
>> +        }
>> +        received += ret;
>> +    }
>
The idea was to only return SEC_E_INCOMPLETE_MESSAGE if there's less
than one complete TLS record in the buffer, it shouldn't be a problem
to have eg. one complete message plus some bytes from the next one,
setting the buffer size further down is supposed to take care of that.


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic