]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
istream-mail: Move pos back when bailing out on error
authorAki Tuomi <aki.tuomi@dovecot.fi>
Fri, 16 Mar 2018 11:39:40 +0000 (13:39 +0200)
committerVille Savolainen <ville.savolainen@dovecot.fi>
Wed, 28 Mar 2018 10:56:58 +0000 (13:56 +0300)
Fixes
Panic: file istream.c: line 276 (i_stream_read): assertion failed: ((_stream->pos - _stream->skip) == (prev_pos - prev_skip))

src/lib-storage/index/istream-mail.c

index f21310f5d16e6ff6f297d4cc23a7f03a5a2bc29b..365f8c897e10e1af7e2b24e2a7199b76898e8084 100644 (file)
@@ -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) {