<!doctype html>
<html>
 <head> 
  <meta charset="UTF-8"> 
 </head>
 <body>
  <div>
   We have released 2.3.19.1 instead, and should be fixed now.
  </div> 
  <div class="default-style">
    
  </div> 
  <div class="default-style">
   Aki
  </div> 
  <blockquote type="cite"> 
   <div>
    On 06/13/2022 6:24 PM John Stoffel <<a href="mailto:john@stoffel.org">john@stoffel.org</a>> wrote:
   </div> 
   <div>
     
   </div> 
   <div>
     
   </div> 
   <div>
    >>>>> "Aki" == Aki Tuomi <<a href="mailto:aki.tuomi@open-xchange.com">aki.tuomi@open-xchange.com</a>> writes:
   </div> 
   <div>
     
   </div> 
   <div>
    Will 2.3.20 be released ASAP with this fix?
   </div> 
   <div>
     
   </div> 
   <div>
    Aki> This has now been fixed in main with
   </div> 
   <div>
    Aki> <a href="https://github.com/dovecot/core/commit/2780f106e3b185981dd7aaf5cbf2e88daa2f7c64.patch" target="_blank" rel="noopener">https://github.com/dovecot/core/commit/2780f106e3b185981dd7aaf5cbf2e88daa2f7c64.patch</a>
   </div> 
   <div>
     
   </div> 
   <div>
    Aki> Aki
   </div> 
   <div>
     
   </div> 
   <div>
    >> On 13/06/2022 10:43 gravitini <<a href="mailto:dovecot@gravitini.com">dovecot@gravitini.com</a>> wrote:
   </div> 
   <div>
    >>
   </div> 
   <div>
    >>
   </div> 
   <div>
    >> Please consider as critical (data loss) and recommend a warning is
   </div> 
   <div>
    >> issued for 2.3.19 users.
   </div> 
   <div>
    >>
   </div> 
   <div>
    >>
   </div> 
   <div>
    >> On 13/06/22 5:25 pm, Aki Tuomi wrote:
   </div> 
   <div>
    >> >> On 13/06/2022 02:09 gravitini <<a href="mailto:dovecot@gravitini.com">dovecot@gravitini.com</a>> wrote:
   </div> 
   <div>
    >> >>
   </div> 
   <div>
    >> >>
   </div> 
   <div>
    >> >> Replying to: <a href="https://dovecot.org/pipermail/dovecot/2022-May/124816.html" target="_blank" rel="noopener">https://dovecot.org/pipermail/dovecot/2022-May/124816.html</a>
   </div> 
   <div>
    >> >>
   </div> 
   <div>
    >> >>
   </div> 
   <div>
    >> >> Hi,
   </div> 
   <div>
    >> >>
   </div> 
   <div>
    >> >> Looking at the code (and tested via local build from source) it looks
   </div> 
   <div>
    >> >> like doveadm deduplicate in 2.3.19 can cause significant data loss.
   </div> 
   <div>
    >> >>
   </div> 
   <div>
    >> >> A 2022-02-11 commit removed key duplication resulting in undefined
   </div> 
   <div>
    >> >> behaviour which is often truncation of a mailbox to 67 entries.
   </div> 
   <div>
    >> >> (HASH_TABLE_MIN_SIZE)
   </div> 
   <div>
    >> >>
   </div> 
   <div>
    >> >> <a href="https://github.com/dovecot/core/commit/320844f50cd669b602d30210e2e5216f65d2050f?diff=split#diff-5842cf9d4248dc515d80ebb45575341b7d76832f979a8ac5f602784cb5b03f2cL121" target="_blank" rel="noopener">https://github.com/dovecot/core/commit/320844f50cd669b602d30210e2e5216f65d2050f?diff=split#diff-5842cf9d4248dc515d80ebb45575341b7d76832f979a8ac5f602784cb5b03f2cL121</a>
   </div> 
   <div>
    >> >>
   </div> 
   <div>
    >> >> diff --git a/src/doveadm/doveadm-mail-deduplicate.c
   </div> 
   <div>
    >> >> b/src/doveadm/doveadm-mail-deduplicate.c
   </div> 
   <div>
    >> >>
   </div> 
   <div>
    >> >> index caec758112..2152482876 100644
   </div> 
   <div>
    >> >> --- a/src/doveadm/doveadm-mail-deduplicate.c
   </div> 
   <div>
    >> >> +++ b/src/doveadm/doveadm-mail-deduplicate.c
   </div> 
   <div>
    >> >> @@ -63,8 +63,10 @@ cmd_deduplicate_box(struct doveadm_mail_cmd_context
   </div> 
   <div>
    >> >> *_ctx,
   </div> 
   <div>
    >> >>                 if (key != NULL && *key != '\0') {
   </div> 
   <div>
    >> >>                         if (hash_table_lookup(hash, key) != NULL)
   </div> 
   <div>
    >> >>                                 mail_expunge(mail);
   </div> 
   <div>
    >> >> -                       else
   </div> 
   <div>
    >> >> +                       else {
   </div> 
   <div>
    >> >> +                               key = p_strdup(pool, key);
   </div> 
   <div>
    >> >>                                 hash_table_insert(hash, key,
   </div> 
   <div>
    >> >> POINTER_CAST(1));
   </div> 
   <div>
    >> >> +                       }
   </div> 
   <div>
    >> >>                 }
   </div> 
   <div>
    >> >>         }
   </div> 
   <div>
    >> > Thank you both for the report, we'll look into this!
   </div> 
   <div>
    >> >
   </div> 
   <div>
    >> > Aki
   </div> 
  </blockquote>
 </body>
</html>