From a9f25877163db18c1600cb185e04af34aed9f0bb Mon Sep 17 00:00:00 2001 From: Jani Taskinen Date: Tue, 8 Apr 2008 08:45:52 +0000 Subject: [PATCH] MFH: - Fixed bug #44667 (proc_open() does not handle pipes with the mode "wb" correctly) --- NEWS | 2 ++ ext/standard/proc_open.c | 2 +- .../tests/general_functions/bug44667.phpt | 33 +++++++++++++++++++ 3 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 ext/standard/tests/general_functions/bug44667.phpt diff --git a/NEWS b/NEWS index 78dda00fb1..ffd0fbaa7b 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,8 @@ PHP NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ?? Apr 2008, PHP 5.2.6 +- Fixed bug #44667 (proc_open() does not handle pipes with the mode 'wb' + correctly). (Jani) - Fixed bug #44591 (imagegif's filename parameter). (Felipe) 03 Apr 2008, PHP 5.2.6RC4 diff --git a/ext/standard/proc_open.c b/ext/standard/proc_open.c index a9a2762caa..cd4c7b70e0 100644 --- a/ext/standard/proc_open.c +++ b/ext/standard/proc_open.c @@ -624,7 +624,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 -- 2.40.0