]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib: istream-jsonstr - Fix potential infinite loop if parent stream's max_buffer_size...
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Thu, 2 Nov 2017 21:24:38 +0000 (23:24 +0200)
committerTimo Sirainen <tss@dovecot.fi>
Thu, 2 Nov 2017 22:19:46 +0000 (00:19 +0200)
src/lib/istream-jsonstr.c

index fb5875ffa36046cbc9f78ffe48d1eb7d32478e7a..1e333b18cf9693bb3745ab54189d46f06850d9b3 100644 (file)
@@ -27,7 +27,11 @@ i_stream_jsonstr_read_parent(struct jsonstr_istream *jstream,
        size = i_stream_get_data_size(stream->parent);
        while (size < min_bytes) {
                ret = i_stream_read_memarea(stream->parent);
-               if (ret <= 0 && (ret != -2 || stream->skip == 0)) {
+               if (ret <= 0) {
+                       if (ret == -2) {
+                               /* tiny parent buffer size - shouldn't happen */
+                               return -2;
+                       }
                        stream->istream.stream_errno =
                                stream->parent->stream_errno;
                        stream->istream.eof = stream->parent->eof;