Browse Source

3 minor bugs:

* If we don't get a $msg back in parseStructure, don't call $msg->setEntIds.
* NIL can be 'NIL ' or 'NIL)'
* Literal sizes DO NOT include the \r\n in their counts.
robsiemb 22 years ago
parent
commit
5b24abe09c
1 changed files with 5 additions and 4 deletions
  1. 5 4
      class/mime/Message.class.php

+ 5 - 4
class/mime/Message.class.php

@@ -138,7 +138,7 @@ class Message {
      */
     function parseStructure($read, &$i, $sub_msg = '') {
         $msg = Message::parseBodyStructure($read, $i, $sub_msg);
-        $msg->setEntIds($msg,false,0);
+        if($msg) $msg->setEntIds($msg,false,0);
         return $msg;
     }
     
@@ -279,7 +279,8 @@ class Message {
                 case 'n':
                 case 'N':
                     /* probably NIL argument */
-                    if (strtoupper(substr($read, $i, 4)) == 'NIL ') {
+                    $tmpnil = strtoupper(substr($read, $i, 4));
+                    if ($tmpnil == 'NIL ' || $tmpnil == 'NIL)') {
                         $arg_a[] = '';
                         ++$arg_no;
                         $i += 2;
@@ -458,8 +459,8 @@ class Message {
 	$iPos = strpos($read,'}',$i);
 	if ($iPos) {
 	   $lit_cnt = substr($read, $i, $iPos - $i);
-	   $i += strlen($lit_cnt) + 3; /* } + \r + \n */
-	   $lit_cnt -= 2; /* lit_cnt includes \r\n */
+	   $i += strlen($lit_cnt) + 3; /* skip } + \r + \n */
+	   /* Now read the literal */
 	   $s = ($lit_cnt ? substr($read,$i,$lit_cnt): '');
 	   $i += $lit_cnt;
 	} else { /* should never happen */