From: Aki Tuomi Date: Fri, 16 Mar 2018 11:39:40 +0000 (+0200) Subject: istream-mail: Move pos back when bailing out on error X-Git-Tag: 2.3.9~2124 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ba1a411211d59ad5dbbaa512d7403943f58aae92;p=thirdparty%2Fdovecot%2Fcore.git istream-mail: Move pos back when bailing out on error Fixes Panic: file istream.c: line 276 (i_stream_read): assertion failed: ((_stream->pos - _stream->skip) == (prev_pos - prev_skip)) --- diff --git a/src/lib-storage/index/istream-mail.c b/src/lib-storage/index/istream-mail.c index f21310f5d1..365f8c897e 100644 --- a/src/lib-storage/index/istream-mail.c +++ b/src/lib-storage/index/istream-mail.c @@ -122,6 +122,9 @@ i_stream_mail_read(struct istream_private *stream) } if (mstream->expected_size < stream->istream.v_offset + size) { i_stream_mail_set_size_corrupted(mstream, size); + /* istream code expects that the position has not changed + when read error occurs, so move pos back. */ + stream->pos -= size; return -1; } } else if (ret == -1 && stream->istream.eof) {