#49936 [Csd]: crash with ftp stream in php_stream_context_get_option()
| From: | pierrick@php.net | Date: | Sat, 28 Nov 2009 16:38:15 +0000 |
| Subject: | #49936 [Csd]: crash with ftp stream in php_stream_context_get_option() | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-145163@lists.php.net to get a copy of this message | ||
ID: 49936
Updated by: pierrick@php.net
Reported By: marielyne at acanac dot net
Status: Closed
Bug Type: Filesystem function related
Operating System: Windows 7
PHP Version: 5.3SVN-2009-10-20 (snap)
Assigned To: pierrick
New Comment:
Unfortunately the patch was not applied on time for the 5.3.1 release
and if I remember well, the opendir() test only crashed when PHP is
compiled with --enable-debug. That's probably why you can't reproduce
it.
Previous Comments:
------------------------------------------------------------------------
[2009-11-28 16:20:18] marielyne at acanac dot net
Did it make it in time for 5.3.1 ?
The opendir() test passes, but original issue remains
<?php
$file = 'ftp://ftp.gnu.org/gnu/m4/m4-1.4.13.tar.xz.sig';
var_dump(
$fr1 = fopen($file, 'rb'),
fclose($fr1),
$fr2 = fopen($file, 'rb'),
fclose($fr2)
);
?>
------------------------------------------------------------------------
[2009-11-15 20:31:13] felipe@php.net
This bug has been fixed in SVN.
Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
Thank you for the report, and for helping us make PHP better.
Thanks for the patch!
------------------------------------------------------------------------
[2009-11-15 20:30:59] svn@php.net
Automatic comment from SVN on behalf of felipe
Revision: http://svn.php.net/viewvc/?view=revision&revision=290796
Log: - Fixed bug #49936 (crash with ftp stream in
php_stream_context_get_option())
(patch by Pierrick)
------------------------------------------------------------------------
[2009-11-12 00:14:51] pierrick@php.net
The same problem can be reproduce with the following code
<?php
$dir = 'ftp://your:self@localhost/';
opendir($dir);
opendir($dir);
This bug was introduce in 5.3 with the new way to manage references of
stream context.
Patch can be found here (it modify the php_stream_context_set
signature) :
http://www.adoy.net/php/stream-nofetch.diff
Or here (same version but with TSRMLS_FETCH to avoid any signature
modification):
http://www.adoy.net/php/stream-fetch.diff
------------------------------------------------------------------------
[2009-10-24 20:06:23] marielyne at acanac dot net
New information
Reproduce code:
---------------
<?php
$file = 'ftp://your:self@localhost/test.txt';
echo "start\n";
$fo1 = fopen($file, 'rb');
echo "opened.1\n";
fclose($fo1);
echo "closed.1\n";
$fo2 = fopen($file, 'rb');
echo "opened.2\n";
fclose($fo2);
echo "closed.2\n";
?>
Expected result:
----------------
start
opened.1
closed.1
opened.2
closed.2
Actual result:
--------------
start
opened.1
closed.1
Same result if opening different files
Same result if opening different files from different servers
However, if I move first fclose() below second fopen(), it works as
expected
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/49936
--
Edit this bug report at http://bugs.php.net/?id=49936&edit=1