php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #66638 Using SEEK_CUR to seek before start in php://memory produces incorrect results
Submitted: 2014-02-03 23:58 UTC Modified: 2014-02-04 12:34 UTC
From: madhusudancs at gmail dot com Assigned:
Status: Not a bug Package: Streams related
PHP Version: master-Git-2014-02-03 (Git) OS: Linux (likely all)
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If this is not your bug, you can add a comment by following this link.
If this is your bug, but you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: madhusudancs at gmail dot com
New email:
PHP Version: OS:

 

 [2014-02-03 23:58 UTC] madhusudancs at gmail dot com
Description:
------------
When using php://memory stream, attempting to seek behind the start position, produces incorrect results.

Sample test case below (in the next field)

Test case should print the entire stream (all the bytes in the stream, but it prints an empty string.



Test script:
---------------
<?php
$fh = fopen('php://memory', 'w');

for ($ii = 0; $ii < 10; $ii++) {
   fwrite($fh, "[$ii] hello world. ");
}

$sz = 170;

fseek($fh, $sz - 100, SEEK_SET);

fseek($fh, -$sz, SEEK_CUR);

var_dump(fread($fh, $sz));
?>


Expected result:
----------------
string(170) "[0] hello world. [1] hello world. [2] hello world. [3] hello world. [4] hello world. [5] hello world. [6] hello world. [7] hello world. [8] hello world. [9] hello world. "

Actual result:
--------------
string(0) ""

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2014-02-04 02:00 UTC] madhusudancs at gmail dot com
-Summary: Using SEEK_CUR to seek behind start in a produces incorrect result +Summary: Using SEEK_CUR to seek before start in php://memory produces incorrect results
 [2014-02-04 02:00 UTC] madhusudancs at gmail dot com
Updating the summary line
 [2014-02-04 12:34 UTC] krakjoe@php.net
-Status: Open +Status: Not a bug
 [2014-02-04 12:34 UTC] krakjoe@php.net
The second call to fseek returns -1, which you should be checking for, you get unexpected results as a result of not checking return values. 

I'm not sure why you expect to be able to read before the start of a memory stream, but this isn't a bug, the code is wrong.
 
PHP Copyright © 2001-2019 The PHP Group
All rights reserved.
Last updated: Sun Nov 17 02:01:38 2019 UTC