Skip to content

Commit

Permalink
Fixed bug #71245 (file_get_contents() ignores "header" context option…
Browse files Browse the repository at this point in the history
… if it's a reference)
  • Loading branch information
laruence committed Dec 30, 2015
1 parent 3f07a25 commit 90d2f50
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 2 deletions.
2 changes: 2 additions & 0 deletions NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ PHP NEWS
immediately). (Laruence)

- Standard:
. Fixed bug #71245 (file_get_contents() ignores "header" context option if
it's a reference). (Laruence)
. Fixed bug #71220 (Null pointer deref (segfault) in compact via ob_start).
(hugh at allthethings dot co dot nz)
. Fixed bug #71190 (substr_replace converts integers in original $search
Expand Down
5 changes: 3 additions & 2 deletions ext/standard/streamsfuncs.c
Original file line number Diff line number Diff line change
Expand Up @@ -881,10 +881,11 @@ static int parse_context_options(php_stream_context *context, zval *options)
int ret = SUCCESS;

ZEND_HASH_FOREACH_STR_KEY_VAL(Z_ARRVAL_P(options), wkey, wval) {
if (wkey && Z_TYPE_P(wval) == IS_ARRAY) {

ZVAL_DEREF(wval);
if (Z_TYPE_P(wval) == IS_ARRAY) {
ZEND_HASH_FOREACH_STR_KEY_VAL(Z_ARRVAL_P(wval), okey, oval) {
if (okey) {
ZVAL_DEREF(oval);
php_stream_context_set_option(context, ZSTR_VAL(wkey), ZSTR_VAL(okey), oval);
}
} ZEND_HASH_FOREACH_END();
Expand Down
39 changes: 39 additions & 0 deletions ext/standard/tests/streams/bug71245.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
--TEST--
Bug #71245 (file_get_contents() ignores "header" context option if it's a reference)
--FILE--
<?php
$headers = ['Host: okey.com'];
$httpContext = [
'http' => [
'protocol_version' => '1.1',
'method' => 'GET',
'header' => &$headers,
'follow_location' => 0,
'max_redirects' => 0,
'ignore_errors' => true,
'timeout' => 60,
],
];
$context = stream_context_create($httpContext);
$headers = ["Host: bad.com"];
print_r(stream_context_get_options($context));
?>
--EXPECTF--
Array
(
[http] => Array
(
[protocol_version] => 1.1
[method] => GET
[header] => Array
(
[0] => Host: okey.com
)

[follow_location] => 0
[max_redirects] => 0
[ignore_errors] => 1
[timeout] => 60
)

)

0 comments on commit 90d2f50

Please sign in to comment.