From 35b01b64f5cc9fe59d67f4f5abf01087d5221c13 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Thu, 03 Dec 2009 05:59:38 -0500
Subject: [PATCH] - added feof() checks before fgets/fread

---
 program/lib/imap.inc |   16 ++++++++++++----
 1 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/program/lib/imap.inc b/program/lib/imap.inc
index 964d12d..409c262 100644
--- a/program/lib/imap.inc
+++ b/program/lib/imap.inc
@@ -234,7 +234,7 @@
 	$line = '';
 
 	if (!$fp) {
-    		return $line;
+    		return NULL;
 	}
     
 	if (!$size) {
@@ -242,6 +242,10 @@
 	}
     
 	do {
+		if (feof($fp)) {
+			return $line ? $line : NULL;
+		}
+		
     		$buffer = fgets($fp, $size);
 
     		if ($buffer === false) {
@@ -264,6 +268,8 @@
 		$bytes = $a[2][0];
 		while (strlen($out) < $bytes) {
 			$line = iil_ReadBytes($fp, $bytes); 
+			if ($line === NULL)
+				break;
 			$out .= $line;
 		}
 
@@ -276,7 +282,8 @@
 	global $my_prefs;
 	$data = '';
 	$len  = 0;
-	do {
+	while ($len < $bytes && !feof($fp))
+	{
 		$d = fread($fp, $bytes-$len);
 		if (!empty($my_prefs['debug_mode']))
 			write_log('imap', 'S: '. $d);
@@ -286,7 +293,7 @@
     		        break; //nothing was read -> exit to avoid apache lockups
     		}
     		$len = $data_len;
-	} while ($len < $bytes);
+	};
 	
 	return $data;
 }
@@ -716,7 +723,8 @@
 
 function iil_Close(&$conn) {
 	if (iil_PutLine($conn->fp, "I LOGOUT")) {
-		fgets($conn->fp, 1024);
+		if (!feof($conn->fp))
+			fgets($conn->fp, 1024);
 		fclose($conn->fp);
 		$conn->fp = false;
 	}

--
Gitblit v1.9.1