From: Jani Taskinen Date: Tue, 8 Apr 2008 08:42:05 +0000 (+0000) Subject: - Fixed bug #44667 (proc_open does not handle pipes with the mode "wb" correctly) X-Git-Tag: RELEASE_2_0_0b1~484 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=30d057d32ca5e0f41a8258aaee525bcbe6c31829;p=php - Fixed bug #44667 (proc_open does not handle pipes with the mode "wb" correctly) --- diff --git a/ext/standard/proc_open.c b/ext/standard/proc_open.c index 7c7c3ce096..67dd956fa1 100644 --- a/ext/standard/proc_open.c +++ b/ext/standard/proc_open.c @@ -600,7 +600,7 @@ PHP_FUNCTION(proc_open) goto exit_fail; } - if (strcmp(Z_STRVAL_PP(zmode), "w") != 0) { + if (strncmp(Z_STRVAL_PP(zmode), "w", 1) != 0) { descriptors[ndesc].parentend = newpipe[1]; descriptors[ndesc].childend = newpipe[0]; descriptors[ndesc].mode |= DESC_PARENT_MODE_WRITE; diff --git a/ext/standard/tests/general_functions/bug44667.phpt b/ext/standard/tests/general_functions/bug44667.phpt new file mode 100644 index 0000000000..49183cc580 --- /dev/null +++ b/ext/standard/tests/general_functions/bug44667.phpt @@ -0,0 +1,33 @@ +--TEST-- +Bug #44667 (proc_open() does not handle pipes with the mode 'wb' correctly) +--SKIPIF-- + +--FILE-- + array('pipe', 'rb'), + 1 => array('pipe', 'wb'), +); + +$proc = proc_open('cat', $descriptor_spec, $pipes); + +fwrite($pipes[0], 'Hello', 5); +fflush($pipes[0]); +fclose($pipes[0]); + +$result = fread($pipes[1], 5); +fclose($pipes[1]); + +proc_close($proc); + +echo "Result is: ", $result, "\n"; + +echo "Done\n"; + +?> +--EXPECTF-- +Result is: Hello +Done