Le 01/04/2012 14:45, Bron Gondwana a écrit :
On Sun, Apr 01, 2012 at 11:08:36AM +0100, Jeroen van Meeuwen (Kolab Systems) 
wrote:
I'm running an ISP environment with Cyrus 2.3.18.
Given that Cyrus IMAP 2.3 is... well... rather old, it is maintained
by only a small group of people having volunteered to do so. The
main focus for the project is Cyrus IMAP 2.4, and future releases
currently in development, so a question that pops up in my mind is -
can this issue be reproduced in Cyrus IMAP 2.4.14, or even GIT
master (future 2.5)?
No to the main issue, because per-user seen is stored in the mailbox,
so these seen strings don't exist.

And I'm fairly sure the replication protocol won't mind arbitrarily
long SEEN strings either, because it uses a different method.

But - I have no objection to fixing the issue in 2.3.x.

Bron.

I guess the issue is that the original patch replaces prot_printf implementation to rely on vsnprintf with a fixed-size (2048 bytes) buffer. So if any part of cyrus has to write a string (%s) which size is over 2048 characters (actually less than that, since there is the nul-byte ending and possibly extra data to take into account in the format), the output is truncated. This is to compare to the original code of prot_printf which sends the string as-is when if parses '%s' in the format.

The revised version of the patch is not really ideal either, since it introduces a second prot_printf function only to take care of the root UIDL issue related to Outlook. The current code do already use snprintf to format some data (integers etc), so I would say that extending it to recognize formats such as '%#.#d' (that is integer and the likes with minimum field width and/or precision) could be a solution to have the Outlook UIDL patch use the prot_printf function without breaking anything else. But of course it's easier said than done ;)

Julien

Reply via email to