PEAR is discontinued

This is a static archive preserving historical releases and metadata. No new packages or updates will be published. For updates to existing packages, or to publish new packages, please use Composer and Packagist.

Home » HTTP » HTTP_WebDAV_Client » Bug #7714

End of file marker not set in stream_read

Details

Submitted2006-05-24 11:36 UTC
Fromclef at gmx dot de
Assignedhholzgra
StatusClosed
PackageHTTP_WebDAV_Client
PHP Version4.4.2
OSWin XP
Roadmaps(Not assigned)

Comments

[2006-05-24 11:36 UTC] clef at gmx dot de

Description:
------------
When reading a file in a while loop, as shown in the script, it is asumed that the end of file marker is retrieved. Yet, this is not the case leading to a buffer overflow. Due to line 265 in the Stream.php.

The HTTP Request returns 416 when reading beyond the end of the file. The return value ($data) is cleaned, though the $len value isn't set to 0. This is crucial for line 275 where the end of file marker is set. It is not set by cleaning $data which contains the server message, because the $len value is retrieved before the switch operation.

Possible solutions:
- set the $len value to 0 when setting $data to ""
- retrieve the length of $data after the switch

Test script:
---------------
if ($fp = fopen("webdav://wampp:xampp@localhost/webdav/webdav.txt", "r")) {
while (!feof($fp)) {
$buffer .= fread($fp, 1024);
}
echo $buffer;
}