- Fixed bug #46521 (Curl ZTS OpenSSL, error in config.m4 fragment).
(jd at cpanel dot net)
+- Fixed bug #44818 (php://memory writeable when opened read only). (Arnaud)
- Fixed bug #30312 (sybase_unbuffered_query calls). (Timm)
06 Nov 2008, PHP 5.2.7RC3
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")) {
--- /dev/null
+--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"