lbarnaud Tue Nov 11 00:44:37 2008 UTC
Added files:
/php-src/ext/standard/tests/streams bug44818.phpt
Modified files:
/php-src/ext/standard php_fopen_wrapper.c
Log:
Fixed bug #44818 (php://memory writeable when opened read only)
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/php_fopen_wrapper.c?r1=1.64&r2=1.65&diff_format=u
Index: php-src/ext/standard/php_fopen_wrapper.c
diff -u php-src/ext/standard/php_fopen_wrapper.c:1.64
php-src/ext/standard/php_fopen_wrapper.c:1.65
--- php-src/ext/standard/php_fopen_wrapper.c:1.64 Tue Nov 4 21:04:28 2008
+++ php-src/ext/standard/php_fopen_wrapper.c Tue Nov 11 00:44:36 2008
@@ -17,7 +17,7 @@
| Hartmut Holzgraefe <[EMAIL PROTECTED]> |
+----------------------------------------------------------------------+
*/
-/* $Id: php_fopen_wrapper.c,v 1.64 2008/11/04 21:04:28 lbarnaud Exp $ */
+/* $Id: php_fopen_wrapper.c,v 1.65 2008/11/11 00:44:36 lbarnaud Exp $ */
#include <stdio.h>
#include <stdlib.h>
@@ -186,11 +186,21 @@
return NULL;
}
}
- return php_stream_temp_create(TEMP_STREAM_DEFAULT, max_memory);
+ if (strpbrk(mode, "wa+")) {
+ mode_rw = TEMP_STREAM_DEFAULT;
+ } else {
+ mode_rw = TEMP_STREAM_READONLY;
+ }
+ return php_stream_temp_create(mode_rw, max_memory);
}
if (!strcasecmp(path, "memory")) {
- return php_stream_memory_create(TEMP_STREAM_DEFAULT);
+ if (strpbrk(mode, "wa+")) {
+ mode_rw = TEMP_STREAM_DEFAULT;
+ } else {
+ mode_rw = TEMP_STREAM_READONLY;
+ }
+ return php_stream_memory_create(mode_rw);
}
if (!strcasecmp(path, "output")) {
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/streams/bug44818.phpt?view=markup&rev=1.1
Index: php-src/ext/standard/tests/streams/bug44818.phpt
+++ php-src/ext/standard/tests/streams/bug44818.phpt
--TEST--
Bug #44818 (php://memory writeable when opened read only)
--FILE--
<?php
function test($url, $mode) {
echo "$url, $mode\n";
$fd = fopen($url, $mode);
var_dump($fd, fwrite($fd, b"foo"));
var_dump(fseek($fd, 0, SEEK_SET), fread($fd, 3));
fclose($fd);
}
test("php://memory","r");
test("php://memory","r+");
test("php://temp","r");
test("php://temp","w");
?>
--EXPECTF--
php://memory, r
resource(%d) of type (stream)
int(0)
int(0)
string(0) ""
php://memory, r+
resource(%d) of type (stream)
int(3)
int(0)
string(3) "foo"
php://temp, r
resource(%d) of type (stream)
int(0)
int(0)
string(0) ""
php://temp, w
resource(%d) of type (stream)
int(3)
int(0)
string(3) "foo"
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php