A bug was reported to the upstream BTS detailing a flaw in the way evolution
accepts IMAP server data. To quote the upstream bug:
The "SEQUENCE" value in the GData of the IMAP code (camel-imap-folder.c)
is converted from a string using strtol. This allows for negative values.
The imap_rescan uses this value as an int. It checks for !seq and
seq>summary.length. It doesn't check for seq < 0. Although seq is used as
the index of an array.
This means that a negative index number can be fed to the array lookup by
altering the output of an IMAP server.
I'm marking this as a blocker (very very serious) security bug as this is
remotely exploitable (I can put shell code in the UID field of the IMAP
code, and make it execute on the victim's computer, as at the seq'd field
of the index a g_strdup of the UID is written to memory. By carefully
calculating the negative value and overwriting the instruction pointer
near the array's start, I can let it point to that memory and get it to
This flaw is only exploitable via a man in the middle, or a malicious IMAP server.
I assume this has been released by now. Closing as ERRATA.