[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Bug-tar] Tar short read
From: |
Andreas Dilger |
Subject: |
Re: [Bug-tar] Tar short read |
Date: |
Wed, 28 Sep 2011 01:15:58 -0600 |
On 2011-09-27, at 11:53 PM, Paul Eggert wrote:
> If I understand this patch correctly, it has an effect
> only on hosts where SSIZE_MAX < INT_MAX. But there
> are no such hosts in practice. So this patch addresses
> only theoretical issues, right?
There are a couple of fixes in the patch:
- The SSIZE_MAX fix pre-validates the read size and doesn't strictly
have anything to do with INT_MAX, while the fix for Tru64 is a
post-facto workaround. Since SUSv2 says the behaviour for reads
larger than SSIZE_MAX (which happens to be the same as INT_MAX on
32-bit platforms) is undefined, it is better not to rely on read()
returning EINVAL before switching to the smaller reads. On 64-bit
platforms this check never does anything, since SSIZE_MAX is 2^63.
- In case of SSIZE_MAX or BUGGY_READ_MAXIMUM, it continues to read
into the buffer in smaller chunks until the read is completed. It
seems to be a bug that BUGGY_READ_MAXIMUM internally truncates the
read but didn't read as many bytes as requested.
- This read continuation for BUGGY_READ_MAXIMUM and SSIZE_MAX also
handles the short read() case that Kevin reported.
That said, looking more closely at the rest of the code, I see that
a function called full_rw() already exists that calls safe_rw() and
handles the case of a short read that could be used directly instead
of handling it at two levels.
It looks like changing dump_regular_file(), sparse_dump_region(), and
check_sparse_region(), check_data_region() to use full_read() instead
of safe_read() would be enough.
Cheers, Andreas
- Re: [Bug-tar] Tar short read, (continued)
- Re: [Bug-tar] Tar short read, Kevin Fox, 2011/09/27
- Re: [Bug-tar] Tar short read, Sergey Poznyakoff, 2011/09/27
- Re: [Bug-tar] Tar short read, Kevin Fox, 2011/09/27
- Re: [Bug-tar] Tar short read, Sergey Poznyakoff, 2011/09/27
- Re: [Bug-tar] Tar short read, Kevin Fox, 2011/09/27
- Re: [Bug-tar] Tar short read, Sergey Poznyakoff, 2011/09/27
- Re: [Bug-tar] Tar short read, Andreas Dilger, 2011/09/27
- Re: [Bug-tar] Tar short read, Andreas Dilger, 2011/09/27
- Re: [Bug-tar] Tar short read, Kevin Fox, 2011/09/27
- Re: [Bug-tar] Tar short read, Paul Eggert, 2011/09/28
- Re: [Bug-tar] Tar short read,
Andreas Dilger <=
- Re: [Bug-tar] Tar short read, Paul Eggert, 2011/09/28
- Re: [Bug-tar] Tar short read, Sergey Poznyakoff, 2011/09/27
- Re: [Bug-tar] Tar short read, Andreas Dilger, 2011/09/27
- Re: [Bug-tar] Tar short read, Chuck Swiger, 2011/09/27
- Re: [Bug-tar] Tar short read, Kevin Fox, 2011/09/27
- Re: [Bug-tar] Tar short read, Sergey Poznyakoff, 2011/09/27
- Re: [Bug-tar] Tar short read, Kevin Fox, 2011/09/27
- Re: [Bug-tar] Tar short read, Paul Eggert, 2011/09/27
- Re: [Bug-tar] Tar short read, Kevin Fox, 2011/09/27
- Re: [Bug-tar] Tar short read, Antonio Diaz Diaz, 2011/09/27