]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
istream-zlib: Don't overwrite parent istream's error on gz header/trailer read errors.
authorTimo Sirainen <tss@iki.fi>
Tue, 30 Jun 2015 11:26:00 +0000 (14:26 +0300)
committerTimo Sirainen <tss@iki.fi>
Tue, 30 Jun 2015 11:26:00 +0000 (14:26 +0300)
src/lib-compression/istream-zlib.c

index a37361ce57f83f709ecf1754aad9d65e916eca2e..463856c57c3110f232814afc9f66bce27558a543 100644 (file)
@@ -75,7 +75,8 @@ static int i_stream_zlib_read_header(struct istream_private *stream)
        ret = i_stream_read_data(stream->parent, &data, &size,
                                 zstream->prev_size);
        if (size == zstream->prev_size) {
-               if (ret == -1) {
+               stream->istream.stream_errno = stream->parent->stream_errno;
+               if (ret == -1 && stream->istream.stream_errno == 0) {
                        zlib_read_error(zstream, "missing gz header");
                        stream->istream.stream_errno = EINVAL;
                }
@@ -141,7 +142,8 @@ static int i_stream_zlib_read_trailer(struct zlib_istream *zstream)
        ret = i_stream_read_data(stream->parent, &data, &size,
                                 GZ_TRAILER_SIZE-1);
        if (size == zstream->prev_size) {
-               if (ret == -1) {
+               stream->istream.stream_errno = stream->parent->stream_errno;
+               if (ret == -1 && stream->istream.stream_errno == 0) {
                        zlib_read_error(zstream, "missing gz trailer");
                        stream->istream.stream_errno = EINVAL;
                }