diff options
author | Tom N Harris <tnharris@whoopdedo.org> | 2009-01-16 01:15:47 +0100 |
---|---|---|
committer | Tom N Harris <tnharris@whoopdedo.org> | 2009-01-16 01:15:47 +0100 |
commit | ed3655c4c7f9692340f7b54054d35f24a0cc3f68 (patch) | |
tree | 1e170c6770621b7cbcb8df6da90ed950972429ff | |
parent | 1e4a1d1894f82903df44e3a3362ad2d977cb55a9 (diff) | |
download | rpg-ed3655c4c7f9692340f7b54054d35f24a0cc3f68.tar.gz rpg-ed3655c4c7f9692340f7b54054d35f24a0cc3f68.tar.bz2 |
Avoid zero-byte reads
darcs-hash:20090116001547-6942e-b5bc401c0ef4c36b1b7b8ca7ef708587953ec017.gz
-rw-r--r-- | inc/HTTPClient.php | 8 | ||||
-rw-r--r-- | inc/JpegMeta.php | 9 | ||||
-rw-r--r-- | inc/changelog.php | 4 |
3 files changed, 13 insertions, 8 deletions
diff --git a/inc/HTTPClient.php b/inc/HTTPClient.php index 2385b1edd..71844b847 100644 --- a/inc/HTTPClient.php +++ b/inc/HTTPClient.php @@ -333,9 +333,11 @@ class HTTPClient { $byte = fread($socket,1); // readtrailing \n $chunk_size = hexdec($chunk_size); - $this_chunk = fread($socket,$chunk_size); - $r_body .= $this_chunk; - if ($chunk_size) $byte = fread($socket,2); // read trailing \r\n + if ($chunk_size) { + $this_chunk = fread($socket,$chunk_size); + $r_body .= $this_chunk; + $byte = fread($socket,2); // read trailing \r\n + } if($this->max_bodysize && strlen($r_body) > $this->max_bodysize){ $this->error = 'Allowed response size exceeded'; diff --git a/inc/JpegMeta.php b/inc/JpegMeta.php index 41e6e0803..cb1d7d694 100644 --- a/inc/JpegMeta.php +++ b/inc/JpegMeta.php @@ -995,7 +995,10 @@ class JpegMeta $this->_markers[$count]['length'] = $length; if ($capture) { - $this->_markers[$count]['data'] =& fread($this->_fp, $length); + if ($length) + $this->_markers[$count]['data'] =& fread($this->_fp, $length); + else + $this->_markers[$count]['data'] = ""; } elseif (!$done) { $result = @fseek($this->_fp, $length, SEEK_CUR); @@ -1213,12 +1216,12 @@ class JpegMeta else { if ($marker == 0xDA) { // Copy until EOF while (!feof($this->_fp)) { - $data =& fread($this->_fp, 1024 * 16); + $data = fread($this->_fp, 1024 * 16); fputs($this->_fpout, $data, strlen($data)); } } else { // Copy only $length bytes - $data =& fread($this->_fp, $length); + $data = @fread($this->_fp, $length); fputs($this->_fpout, $data, $length); } } diff --git a/inc/changelog.php b/inc/changelog.php index def785f43..f60b487db 100644 --- a/inc/changelog.php +++ b/inc/changelog.php @@ -250,7 +250,7 @@ function getRevisionInfo($id, $rev, $chunk_size=8192) { $got = 0; fseek($fp, $head); while ($got<$chunk_size && !feof($fp)) { - $tmp = fread($fp, max($chunk_size-$got, 0)); + $tmp = @fread($fp, max($chunk_size-$got, 0)); if ($tmp===false) { break; } //error state $got += strlen($tmp); $chunk .= $tmp; @@ -335,7 +335,7 @@ function getRevisions($id, $first, $num, $chunk_size=8192) { $read_size = max($tail-$finger, 0); // found chunk size $got = 0; while ($got<$read_size && !feof($fp)) { - $tmp = fread($fp, max($read_size-$got, 0)); + $tmp = @fread($fp, max($read_size-$got, 0)); if ($tmp===false) { break; } //error state $got += strlen($tmp); $chunk .= $tmp; |