diff options
-rw-r--r-- | ext/standard/exec.c | 2 | ||||
-rw-r--r-- | ext/standard/tests/general_functions/bug49847.phpt | 12 | ||||
-rw-r--r-- | ext/standard/tests/general_functions/bug50732.phpt | 12 |
3 files changed, 25 insertions, 1 deletions
diff --git a/ext/standard/exec.c b/ext/standard/exec.c index 526d9e98cc..e5fb467bb2 100644 --- a/ext/standard/exec.c +++ b/ext/standard/exec.c @@ -130,7 +130,7 @@ PHPAPI int php_exec(int type, char *cmd, zval *array, zval *return_value TSRMLS_ } if (bufl) { /* strip trailing whitespaces if we have not done so already */ - if ((type == 2 && bufl && !l) || type != 2) { + if ((type == 2 && buf != b) || type != 2) { l = bufl; while (l-- && isspace(((unsigned char *)buf)[l])); if (l != (bufl - 1)) { diff --git a/ext/standard/tests/general_functions/bug49847.phpt b/ext/standard/tests/general_functions/bug49847.phpt new file mode 100644 index 0000000000..01ee1618c0 --- /dev/null +++ b/ext/standard/tests/general_functions/bug49847.phpt @@ -0,0 +1,12 @@ +--TEST-- +Bug #49847 (exec() fails on lines larger then 4095 bytes) +--FILE-- +<?php +exec("printf %4098d 1", $output); +var_dump($output); +?> +--EXPECT-- +array(1) { + [0]=> + string(4098) " 1" +} diff --git a/ext/standard/tests/general_functions/bug50732.phpt b/ext/standard/tests/general_functions/bug50732.phpt new file mode 100644 index 0000000000..ed8341decb --- /dev/null +++ b/ext/standard/tests/general_functions/bug50732.phpt @@ -0,0 +1,12 @@ +--TEST-- +Bug #50732 (exec() adds single byte twice to $output array) +--FILE-- +<?php +exec("echo x", $output); +var_dump($output); +?> +--EXPECT-- +array(1) { + [0]=> + string(1) "x" +} |