From ceb52fe07476f9584e0ffe3d5937b47d087a145e Mon Sep 17 00:00:00 2001 From: alecpl Date: Wed, 19 Nov 2008 14:33:35 +0000 Subject: - Fix handling of some malformed messages (#1484438) --- program/lib/imap.inc | 26 ++++---------------------- 1 file changed, 4 insertions(+), 22 deletions(-) (limited to 'program/lib/imap.inc') diff --git a/program/lib/imap.inc b/program/lib/imap.inc index fb971db68..316980ca5 100644 --- a/program/lib/imap.inc +++ b/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_UnSubscribe(&$conn, $folder) { } 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) { -- cgit v1.2.3