[PATCH 1/2] server: Added server side named pipe read and write implementation and use it for message mode pipes.

Jacek Caban jacek at codeweavers.com
Wed Mar 1 07:24:52 CST 2017


On 28.02.2017 19:36, Sebastian Lackner wrote:
> On 28.02.2017 14:14, Jacek Caban wrote:
>> +    LIST_FOR_EACH_ENTRY( message, &pipe_end->message_queue, struct pipe_message, entry )
>> +        avail += message->iosb->in_size - message->read_pos;
>> +    reply_size = min( reply_size, avail );
>> +
>> +    if (avail)
>> +    {
>> +        message = LIST_ENTRY( list_head(&pipe_end->message_queue), struct pipe_message, entry );
>> +        reply_size = min( reply_size, message->iosb->in_size );
>> +    }
>
> Isn't there a problem with this size check? Lets assume we have two messages
> with 10 byte, for the first one the read_pos = 5. Then avail == 15, and reply_size
> is clamped to 10 - but it will attempt to copy 10 bytes starting position 5?

Yes, you're right, good catch. It definitely needs more tests. I sent a
new version with extended tests.

Thanks,
Jacek



More information about the wine-devel mailing list