]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: index-mail-headers - Avoid unsigned overflow on header_match_value
authorAki Tuomi <aki.tuomi@open-xchange.com>
Thu, 20 Aug 2020 07:31:41 +0000 (10:31 +0300)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Fri, 11 Sep 2020 07:07:20 +0000 (07:07 +0000)
src/lib-storage/index/index-mail-headers.c

index df21b9129ec27c9b5feea2a74c2c385dbcecbf56..4f3fe68929d429c130cd486b198155671969ae7e 100644 (file)
@@ -209,10 +209,11 @@ void index_mail_parse_header_init(struct index_mail *mail,
                array_clear(&mail->header_lines);
                array_clear(&mail->header_match_lines);
 
-               mail->header_match_value += HEADER_MATCH_SKIP_COUNT;
                i_assert((mail->header_match_value &
                          (HEADER_MATCH_SKIP_COUNT-1)) == 0);
-               if (mail->header_match_value == 0) {
+               if (mail->header_match_value + HEADER_MATCH_SKIP_COUNT <= UINT8_MAX)
+                       mail->header_match_value += HEADER_MATCH_SKIP_COUNT;
+               else {
                        /* wrapped, we'll have to clear the buffer */
                        array_clear(&mail->header_match);
                        mail->header_match_value = HEADER_MATCH_SKIP_COUNT;