diff options
author | Andre Heinecke <[email protected]> | 2015-03-17 09:48:09 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2015-03-17 10:55:22 +0000 |
commit | 6cbbb0bec98e1acefc4c7163cc41a507469db920 (patch) | |
tree | 72af423253180a75d9d60e85ff818a603f79a68f | |
parent | common: Add feature to ease using argparse's usage(). (diff) | |
download | gnupg-6cbbb0bec98e1acefc4c7163cc41a507469db920.tar.gz gnupg-6cbbb0bec98e1acefc4c7163cc41a507469db920.zip |
gpgtar: Fix extracting files with !(size % 512)
* tools/gpgtar-extract.c (extract_regular): Handle size multiples
of RECORDSIZE.
--
If a hdr->size was a multiple of 512 the last record would
not have been written and the files corrupted accordingly.
GnuPG-bug-id: 1926
Signed-off-by: Andre Heinecke <[email protected]>
Changed to use only if-else.
Signed-off-by: Werner Koch <[email protected]>
-rw-r--r-- | tools/gpgtar-extract.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/tools/gpgtar-extract.c b/tools/gpgtar-extract.c index 1ea359755..6e506d94d 100644 --- a/tools/gpgtar-extract.c +++ b/tools/gpgtar-extract.c @@ -66,7 +66,11 @@ extract_regular (estream_t stream, const char *dirname, if (err) goto leave; n++; - nbytes = (n < hdr->nrecords)? RECORDSIZE : (hdr->size % RECORDSIZE); + if (n < hdr->nrecords || (hdr->size && !(hdr->size % RECORDSIZE))) + nbytes = RECORDSIZE; + else + nbytes = (hdr->size % RECORDSIZE); + nwritten = es_fwrite (record, 1, nbytes, outfp); if (nwritten != nbytes) { |