Opened 11 years ago
Last modified 11 years ago
#5584 new Bugs
gzip_decompressor sometimes truncates data
| Reported by: | Owned by: | Jonathan Turkanis | |
|---|---|---|---|
| Milestone: | To Be Determined | Component: | iostreams |
| Version: | Boost 1.41.0 | Severity: | Problem |
| Keywords: | Cc: |
Description
Th following trivial sample program boost_gunzip.cc only decompresses files partially. This issue only appears for a minority of the files.
#include <boost/iostreams/device/file.hpp>
#include <boost/iostreams/filtering_stream.hpp>
#include <boost/iostreams/filter/gzip.hpp>
#include <iostream>
#include <ios>
int main(int argc, const char *argv[]) {
if (argc != 2) {
std::cerr << "need exactly one argument" << std::endl;
return 1;
}
boost::iostreams::filtering_istream in;
in.push(boost::iostreams::gzip_decompressor());
in.push(boost::iostreams::file_source(argv[1],
std::ios_base::in | std::ios_base::binary));
while (in.good()) {
char c = in.get();
if (in.good()) std::cout << c;
}
};
In the following example, gzip_decompressor misses 113 bytes:
~$ cat <(for i in `seq 0 100`; do echo 'Mon May 30 23:17:43 EDT 2011'; done) > /tmp/a ~$ md5sum /tmp/a 040fce9cef21c343fd9ab2aecf1515e3 /tmp/a ~$ wc -c /tmp/a 2929 /tmp/a ~$ gzip /tmp/a ~$ md5sum /tmp/a.gz 46bd5683f86075e30124c5a6a1d2f83d /tmp/a.gz ~$ zcat /tmp/a.gz | wc -c 2929 ~$ ./boost_gunzip /tmp/a.gz | wc -c 2816
This is on a RHEL 6.1 64bit system, i.e., using boost-iostreams-1.41.0-11.el6.x86_64.
Attachments (1)
Change History (3)
by , 11 years ago
comment:1 by , 11 years ago
Looks like this doesn't affect latest trunk.
ivan@ivan-desktop:~/iostreams-test$ cat <(for i in `seq 0 100`; do echo 'Mon May 30 23:17:43 EDT 2011'; done) > a ivan@ivan-desktop:~/iostreams-test$ wc -c a 2929 a ivan@ivan-desktop:~/iostreams-test$ gzip a ivan@ivan-desktop:~/iostreams-test$ zcat a.gz | wc -c 2929 ivan@ivan-desktop:~/iostreams-test$ ./boost_gunzip a.gz | wc -c 2929
trunk r72410. ubuntu 11.04 x64
comment:2 by , 11 years ago
| Component: | None → iostreams |
|---|---|
| Owner: | set to |
Note:
See TracTickets
for help on using tickets.

Compressed file
a.gzcausing truncated reads