Re: [hackers] [sbase][PATCH] fix tar short reads from pipes

From: willy <willy_AT_mailoo.org>
Date: Wed, 8 Feb 2017 08:45:30 +0100

Michael Forney wrote:
> On Fri, Feb 3, 2017 at 9:35 AM, willy <willy_AT_mailoo.org> 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.

Here is an updated patch for it. I prefer keeping the EINTR check for
now. It doesn't harm, and in case signal handling is added someday,
this function will be ready for it.

Received on Wed Feb 08 2017 - 08:45:30 CET

This archive was generated by hypermail 2.3.0 : Wed Feb 08 2017 - 08:48:17 CET