alecpl
2008-11-19 ceb52fe07476f9584e0ffe3d5937b47d087a145e
- Fix handling of some malformed messages (#1484438)


2 files modified
30 ■■■■ changed files
CHANGELOG 4 ●●●● patch | view | raw | blame | history
program/lib/imap.inc 26 ●●●● patch | view | raw | blame | history
CHANGELOG
@@ -1,6 +1,10 @@
CHANGELOG RoundCube Webmail
---------------------------
2008/11/19 (alec)
----------
- Fix handling of some malformed messages (#1484438)
2008/11/15 (alec)
----------
- Fix big memory consumption and speed up searching on servers without SORT capability
program/lib/imap.inc
@@ -70,6 +70,7 @@
        - fixed iil_C_Sort() to support very long and/or divided responses
        - added BYE response simple support for endless loop prevention
        - added 3rd argument in iil_StartsWith* functions
        - fix iil_C_FetchPartHeader() in some cases by use of iil_C_HandlePartBody()
********************************************************/
@@ -2368,33 +2369,14 @@
}
function iil_C_FetchPartHeader(&$conn, $mailbox, $id, $part) {
    $fp     = $conn->fp;
    $result = false;
    if (($part == 0) || (empty($part))) {
    if (empty($part)) {
        $part = 'HEADER';
    } else {
            $part .= '.MIME';
    }
    
    if (iil_C_Select($conn, $mailbox)) {
        $key     = 'fh' . ($c++);
        $request = $key . " FETCH $id (BODY.PEEK[$part])";
        if (!iil_PutLine($fp, $request)) return false;
        do {
            $line = chop(iil_ReadLine($fp, 200));
            $a    = explode(' ', $line);
            if (($line[0] == '*') && ($a[2] == 'FETCH')
                        && ($line[strlen($line)-1] != ')')) {
                $line=iil_ReadLine($fp, 300);
                while (trim($line) != ')') {
                    $result .= $line;
                    $line=iil_ReadLine($fp, 300);
                }
            }
        } while (strcmp($a[0], $key) != 0 && ($a[0] != '*' || $a[1] != 'BYE'));
    }
    return $result;
    return iil_C_HandlePartBody(&$conn, $mailbox, $id, $part, 1);
}
function iil_C_HandlePartBody(&$conn, $mailbox, $id, $part, $mode, $file=NULL) {