Better support for malformed/absent dates and headerlines ending in only "\n".
[squirrelmail.git] / functions / imap_messages.php
index cbfd233..23bb1ac 100755 (executable)
@@ -530,11 +530,15 @@ function sqimap_get_small_header_list ($imap_stream, $msg_list, $show_num=false)
     $i = 0;
     
     foreach ($read_list as $r) {
+        /* initialize/reset vars */
         $subject = _("(no subject)");
         $from = _("Unknown sender");
         $priority = 0;
         $messageid = '<>';
-        $cc = $to = $date = $type[0] = $type[1] = $inrepto = '';
+       $type = array('','');
+        $cc = $to = $inrepto = '';
+        // use unset because we do isset below
+        unset($date);
         $flag_seen = $flag_answered = $flag_deleted = $flag_flagged = false;
 
         $read = implode('',$r);
@@ -622,11 +626,11 @@ function sqimap_get_small_header_list ($imap_stream, $msg_list, $show_num=false)
                 $i = strpos($read,'{',$i);
                 $header = parseString($read,$i);
                 if ($header === false) break 3;
-                /* First we unfold the header */
-                $hdr = trim(str_replace(array("\r\n\t", "\r\n "),array(' ', ' '), $header));
+                /* First we replace all \r\n by \n, and unfold the header */
+                $hdr = trim(str_replace(array("\r\n", "\n\t", "\n "),array("\n", ' ', ' '), $header));
                 /* Now we can make a new header array with */
                 /* each element representing a headerline  */
-                $hdr = explode("\r\n" , $hdr);
+                $hdr = explode("\n" , $hdr);
                 foreach ($hdr as $line) {
                     $pos = strpos($line, ':');
                     if ($pos > 0) {
@@ -655,9 +659,6 @@ function sqimap_get_small_header_list ($imap_stream, $msg_list, $show_num=false)
                                 if(!is_array($type)) {
                                     $type[0] = 'text';
                                 }
-                                if (!isset($type[1])) {
-                                    $type[1] = '';
-                                }
                                 break;
                             default: break;
                             }
@@ -674,7 +675,7 @@ function sqimap_get_small_header_list ($imap_stream, $msg_list, $show_num=false)
             $date = str_replace('  ', ' ', $date);
             $tmpdate  = explode(' ', trim($date));
         } else {
-            $tmpdate = $date = array('', '', '', '', '', '');
+            $tmpdate = $date = array();
         }
         if ($uid_support) {
             $msgi ="$unique_id";