mirror of
https://github.com/php/php-src.git
synced 2025-01-24 20:53:37 +08:00
MFH: Fixed bug #44818 (php://memory writeable when opened read only)
This commit is contained in:
parent
dcdf00bdfc
commit
f6345133b3
@ -177,11 +177,21 @@ php_stream * php_stream_url_wrap_php(php_stream_wrapper *wrapper, char *path, ch
|
||||
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")) {
|
||||
|
37
ext/standard/tests/streams/bug44818.phpt
Normal file
37
ext/standard/tests/streams/bug44818.phpt
Normal file
@ -0,0 +1,37 @@
|
||||
--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"
|
Loading…
Reference in New Issue
Block a user