diff options
| author | Jani Taskinen <jani@php.net> | 2008-04-08 08:45:52 +0000 |
|---|---|---|
| committer | Jani Taskinen <jani@php.net> | 2008-04-08 08:45:52 +0000 |
| commit | a9f25877163db18c1600cb185e04af34aed9f0bb (patch) | |
| tree | 959481eb5bcd0fe729215b9784379f1fc63e1416 /ext/standard | |
| parent | 5f7df8099a3dda0d356c5c65513bf9f71f8c701a (diff) | |
| download | php-git-a9f25877163db18c1600cb185e04af34aed9f0bb.tar.gz | |
MFH: - Fixed bug #44667 (proc_open() does not handle pipes with the mode "wb" correctly)
Diffstat (limited to 'ext/standard')
| -rw-r--r-- | ext/standard/proc_open.c | 2 | ||||
| -rw-r--r-- | ext/standard/tests/general_functions/bug44667.phpt | 33 |
2 files changed, 34 insertions, 1 deletions
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-- +<?php if (!is_executable('/bin/cat')) echo 'skip cat not found'; ?> +--FILE-- +<?php + +$pipes = array(); + +$descriptor_spec = array( + 0 => 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 |
