1
0
mirror of https://github.com/php/php-src.git synced 2026-03-24 00:02:20 +01:00

Merge branch 'PHP-8.3'

* PHP-8.3:
  Fix GH-12655: proc_open() does not take into account references in the descriptor array
This commit is contained in:
Niels Dossche
2023-11-13 19:34:49 +01:00
2 changed files with 23 additions and 0 deletions

View File

@@ -1173,6 +1173,7 @@ PHP_FUNCTION(proc_open)
descriptors[ndesc].index = (int)nindex;
ZVAL_DEREF(descitem);
if (Z_TYPE_P(descitem) == IS_RESOURCE) {
if (set_proc_descriptor_from_resource(descitem, &descriptors[ndesc], ndesc) == FAILURE) {
goto exit_fail;

View File

@@ -0,0 +1,22 @@
--TEST--
GH-12655 (proc_open(): Argument #2 ($descriptor_spec) must only contain arrays and streams [Descriptor item must be either an array or a File-Handle])
--FILE--
<?php
$descriptor_spec = [
0 => [ "pipe", "r" ], // stdin is a pipe that the child will read from
1 => [ "pipe", "w" ], // stdout is a pipe that the child will write to
2 => [ "pipe", "w" ], // stderr is a file to write to
];
foreach ( $descriptor_spec as $fd => &$d )
{
// don't do anything, just the fact that we used "&$d" will sink the ship!
}
$proc = proc_open(PHP_BINARY, $descriptor_spec, $pipes);
echo $proc === false ? "FAILED\n" : "SUCCEEDED\n";
?>
--EXPECT--
SUCCEEDED