Your message dated Sat, 06 Feb 2021 10:39:26 +0000
with message-id 
<6425525e38201ecf9a2d3e0f1e63c0d3b08e0fc0.ca...@adam-barratt.org.uk>
and subject line Closing p-u bugs for updates in 10.8
has caused the Debian Bug report #981239,
regarding buster-pu: package dovecot/1:2.3.4.1-5+deb10u6
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact ow...@bugs.debian.org
immediately.)


-- 
981239: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=981239
Debian Bug Tracking System
Contact ow...@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
Tags: buster
User: release.debian....@packages.debian.org
Usertags: pu

I'd like to update the dovecot IMAP suite in buster to address bug #970386.
This bug involves a server crash that's triggered when issuing a server-side
full-text search against a mailbox containing messages with certain malformed
MIME components.  The fix cherry-picked cleanly from upstream and I have
confirmed that it addresses the issue.

Thanks
noah
diff -Nru dovecot-2.3.4.1/debian/changelog dovecot-2.3.4.1/debian/changelog
--- dovecot-2.3.4.1/debian/changelog    2020-12-28 15:18:55.000000000 -0800
+++ dovecot-2.3.4.1/debian/changelog    2021-01-27 16:35:17.000000000 -0800
@@ -1,3 +1,10 @@
+dovecot (1:2.3.4.1-5+deb10u6) buster; urgency=medium
+
+  * Backport upstream fix for crash that occurred when searching mailboxes
+    containing malformed MIME messages. (Closes: #970386)
+
+ -- Noah Meyerhans <no...@debian.org>  Wed, 27 Jan 2021 16:35:17 -0800
+
 dovecot (1:2.3.4.1-5+deb10u5) buster-security; urgency=high
 
   * Import upstream fix for security issues:
diff -Nru dovecot-2.3.4.1/debian/patches/bug970386.patch 
dovecot-2.3.4.1/debian/patches/bug970386.patch
--- dovecot-2.3.4.1/debian/patches/bug970386.patch      1969-12-31 
16:00:00.000000000 -0800
+++ dovecot-2.3.4.1/debian/patches/bug970386.patch      2021-01-27 
16:35:17.000000000 -0800
@@ -0,0 +1,90 @@
+Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=970386
+From: Timo Sirainen <timo.sirai...@open-xchange.com>
+Date: Mon, 31 Aug 2020 20:38:42 +0300
+Subject: [PATCH] lib-mail: message_parser_init_from_parts() - Fix crash if
+ MIME boundaries don't end
+
+If the last "boundary--" doens't exist, the parsing assert-crashed at
+deinit. This mainly happened when searching mails.
+
+Fixes:
+Panic: file message-parser.c: line 175 (message_part_finish): assertion 
failed: (ctx->nested_parts_count > 0)
+---
+ src/lib-mail/message-parser.c      | 13 ++++++++-----
+ src/lib-mail/test-message-parser.c | 21 ++++++++++++++++++++-
+ 2 files changed, 28 insertions(+), 6 deletions(-)
+
+Index: dovecot/src/lib-mail/message-parser.c
+===================================================================
+--- dovecot.orig/src/lib-mail/message-parser.c
++++ dovecot/src/lib-mail/message-parser.c
+@@ -138,6 +138,7 @@ message_part_append(struct message_parse
+       struct message_part *parent = ctx->part;
+       struct message_part *part;
+ 
++      i_assert(!ctx->preparsed);
+       i_assert(parent != NULL);
+       i_assert((parent->flags & (MESSAGE_PART_FLAG_MULTIPART |
+                                  MESSAGE_PART_FLAG_MESSAGE_RFC822)) != 0);
+@@ -171,12 +172,14 @@ static void message_part_finish(struct m
+ {
+       struct message_part **const *parent_next_partp;
+ 
+-      i_assert(ctx->nested_parts_count > 0);
+-      ctx->nested_parts_count--;
+-
+-      parent_next_partp = array_back(&ctx->next_part_stack);
+-      array_pop_back(&ctx->next_part_stack);
+-      ctx->next_part = *parent_next_partp;
++      if (!ctx->preparsed) {
++              i_assert(ctx->nested_parts_count > 0);
++              ctx->nested_parts_count--;
++
++              parent_next_partp = array_back(&ctx->next_part_stack);
++              array_pop_back(&ctx->next_part_stack);
++              ctx->next_part = *parent_next_partp;
++      }
+ 
+       message_size_add(&ctx->part->parent->body_size, &ctx->part->body_size);
+       message_size_add(&ctx->part->parent->body_size, 
&ctx->part->header_size);
+Index: dovecot/src/lib-mail/test-message-parser.c
+===================================================================
+--- dovecot.orig/src/lib-mail/test-message-parser.c
++++ dovecot/src/lib-mail/test-message-parser.c
+@@ -180,9 +180,10 @@ static void test_message_parser_small_bl
+ static void test_message_parser_stop_early(void)
+ {
+       struct message_parser_ctx *parser;
+-      struct istream *input;
++      struct istream *input, *input2;
+       struct message_part *parts;
+       struct message_block block;
++      const char *error;
+       unsigned int i;
+       pool_t pool;
+       int ret;
+@@ -200,6 +201,24 @@ static void test_message_parser_stop_ear
+                                                             &block)) > 0) ;
+               test_assert(ret == 0);
+               message_parser_deinit(&parser, &parts);
++
++              /* test preparsed - first re-parse everything with a stream
++                 that sees EOF at this position */
++              input2 = i_stream_create_from_data(test_msg, i);
++              parser = message_parser_init(pool, input2, &set_empty);
++              while ((ret = message_parser_parse_next_block(parser,
++                                                            &block)) > 0) ;
++              test_assert(ret == -1);
++              message_parser_deinit(&parser, &parts);
++
++              /* now parse from the parts */
++              i_stream_seek(input2, 0);
++              parser = message_parser_init_from_parts(parts, input2, 
&set_empty);
++              while ((ret = message_parser_parse_next_block(parser,
++                                                            &block)) > 0) ;
++              test_assert(ret == -1);
++              test_assert(message_parser_deinit_from_parts(&parser, &parts, 
&error) == 0);
++              i_stream_unref(&input2);
+       }
+ 
+       i_stream_unref(&input);
diff -Nru dovecot-2.3.4.1/debian/patches/series 
dovecot-2.3.4.1/debian/patches/series
--- dovecot-2.3.4.1/debian/patches/series       2020-12-28 15:18:55.000000000 
-0800
+++ dovecot-2.3.4.1/debian/patches/series       2021-01-27 16:35:17.000000000 
-0800
@@ -56,4 +56,5 @@
 CVE-2020-24386/0002-imap-Add-unit-test-for-imap-client-hibernate.patch
 CVE-2020-25275/0001-lib-mail-message-parser-Fix-assert-crash-when-enforc.patch
 CVE-2020-25275/0002-lib-imap-Don-t-generate-invalid-BODYSTRUCTURE-when-r.patch
+bug970386.patch
 debian-changes

--- End Message ---
--- Begin Message ---
Package: release.debian.org
Version: 10.8

Hi,

Each of the updates referenced by these bugs was included in today's
10.8 point release.

Regards,

Adam

--- End Message ---

Reply via email to