On Fri, Feb 3, 2017 at 9:35 AM, willy <[email protected]> wrote:
> Willy Gfn wrote:
>> Hello,
>>
>> The attached patch makes tar read again from a pipe in case less bytes
>> are read than expected.
>> This prevent a bug where it fails to extract files correctly because
>> not enough bytes are read from, eg, a pipe hooked to a decompression
>> program.
>
> Just realised there is a bug in my patch. We should only keep reading
> if read() returns more than 0 bytes, otherwise the functions returns.
>
> Updated patch attached.

If there is EINTR, s will be decremented by 1 incorrectly since r will
be -1. I think you need to move s += r to after the if (r < 0). But, I
don't think you could even get EINTR since tar doesn't set any signal
handlers. Maybe there is some case I don't know about though.

Reply via email to