alecpl
2009-05-10 4769ead5e8fa2cbee61ac6675d499cb16d7ffb7c
- prevent infinite loop on imap error in iil_C_HandlePartBody()


1 files modified
15 ■■■■ changed files
program/lib/imap.inc 15 ●●●● patch | view | raw | blame | history
program/lib/imap.inc
@@ -2323,7 +2323,7 @@
    
    if (iil_C_Select($conn, $mailbox)) {
            $reply_key = '* ' . $id;
            // format request
        $key     = 'ftch' . ($c++) . ' ';
        $request = $key . "FETCH $id (BODY.PEEK[$part])";
@@ -2336,7 +2336,7 @@
            do {
                $line = chop(iil_ReadLine($fp, 1000));
                $a    = explode(' ', $line);
            } while ($a[2] != 'FETCH');
            } while (!($end = iil_StartsWith($line, $key, true)) && $a[2] != 'FETCH');
            $len = strlen($line);
        // handle empty "* X FETCH ()" response
@@ -2407,9 +2407,10 @@
                }
            }
            // read in anything up until last line
        do {
                $line = iil_ReadLine($fp, 1024);
        } while (!iil_StartsWith($line, $key, true));
        if (!$end)
            do {
                    $line = iil_ReadLine($fp, 1024);
            } while (!iil_StartsWith($line, $key, true));
        
        if ($mode == 3 && $file) {
            return true;
@@ -2425,12 +2426,10 @@
            }
            
        return false;
    } else {
        echo 'Select failed.';
    }
    
    if ($mode==1) {
        if ($file) {
        if ($file && $result) {
            fwrite($file, $result);
            return true;
        }