From c27f060a08d3bbf89fadd58baf61f5ba97a47e3a Mon Sep 17 00:00:00 2001 From: Anton Yuzhaninov Date: Wed, 30 Aug 2017 20:49:17 -0400 Subject: [PATCH] lib-compression: Fix assert in i_stream_zlib_seek Also fix same bug in i_stream_bzlib_seek, i_stream_lz4_seek, i_stream_lzma_seek. --- src/lib-compression/istream-bzlib.c | 3 ++- src/lib-compression/istream-lz4.c | 3 ++- src/lib-compression/istream-lzma.c | 3 ++- src/lib-compression/istream-zlib.c | 3 ++- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/lib-compression/istream-bzlib.c b/src/lib-compression/istream-bzlib.c index 9d5be12e12..45a13c053e 100644 --- a/src/lib-compression/istream-bzlib.c +++ b/src/lib-compression/istream-bzlib.c @@ -226,7 +226,7 @@ i_stream_bzlib_seek(struct istream_private *stream, uoff_t v_offset, bool mark) stream->pos = stream->skip; } else { /* read and cache forward */ - ssize_t ret = -1; + ssize_t ret; do { size_t avail = stream->pos - stream->skip; @@ -235,6 +235,7 @@ i_stream_bzlib_seek(struct istream_private *stream, uoff_t v_offset, bool mark) i_stream_skip(&stream->istream, v_offset - stream->istream.v_offset); + ret = -1; break; } diff --git a/src/lib-compression/istream-lz4.c b/src/lib-compression/istream-lz4.c index 6b23a86f29..1a91d947eb 100644 --- a/src/lib-compression/istream-lz4.c +++ b/src/lib-compression/istream-lz4.c @@ -206,7 +206,7 @@ i_stream_lz4_seek(struct istream_private *stream, uoff_t v_offset, bool mark) stream->pos = stream->skip; } else { /* read and cache forward */ - ssize_t ret = -1; + ssize_t ret; do { size_t avail = stream->pos - stream->skip; @@ -215,6 +215,7 @@ i_stream_lz4_seek(struct istream_private *stream, uoff_t v_offset, bool mark) i_stream_skip(&stream->istream, v_offset - stream->istream.v_offset); + ret = -1; break; } diff --git a/src/lib-compression/istream-lzma.c b/src/lib-compression/istream-lzma.c index 719354e95f..a98a3a7854 100644 --- a/src/lib-compression/istream-lzma.c +++ b/src/lib-compression/istream-lzma.c @@ -235,7 +235,7 @@ i_stream_lzma_seek(struct istream_private *stream, uoff_t v_offset, bool mark) stream->pos = stream->skip; } else { /* read and cache forward */ - ssize_t ret = -1; + ssize_t ret; do { size_t avail = stream->pos - stream->skip; @@ -244,6 +244,7 @@ i_stream_lzma_seek(struct istream_private *stream, uoff_t v_offset, bool mark) i_stream_skip(&stream->istream, v_offset - stream->istream.v_offset); + ret = -1; break; } diff --git a/src/lib-compression/istream-zlib.c b/src/lib-compression/istream-zlib.c index 7cdfe82038..db29d6c20b 100644 --- a/src/lib-compression/istream-zlib.c +++ b/src/lib-compression/istream-zlib.c @@ -398,7 +398,7 @@ i_stream_zlib_seek(struct istream_private *stream, uoff_t v_offset, bool mark) stream->pos = stream->skip; } else { /* read and cache forward */ - ssize_t ret = -1; + ssize_t ret; do { size_t avail = stream->pos - stream->skip; @@ -407,6 +407,7 @@ i_stream_zlib_seek(struct istream_private *stream, uoff_t v_offset, bool mark) i_stream_skip(&stream->istream, v_offset - stream->istream.v_offset); + ret = -1; break; } -- 2.47.3