From: Jani Taskinen Date: Tue, 8 Apr 2008 08:42:24 +0000 (+0000) Subject: MFH:- Fixed bug #44667 (proc_open does not handle pipes with the mode "wb" correctly) X-Git-Tag: BEFORE_NEW_PARAMETER_PARSE~415 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=04ea6d79d593272434e821d4977d36481ec22c73;p=php MFH:- 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 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