]> granicus.if.org Git - php/commitdiff
Fixed bug #50732 (exec() adds single byte twice to $output array).
authorIlia Alshanetsky <iliaa@php.net>
Wed, 13 Jan 2010 13:44:58 +0000 (13:44 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Wed, 13 Jan 2010 13:44:58 +0000 (13:44 +0000)
ext/standard/exec.c
ext/standard/tests/general_functions/bug49847.phpt [new file with mode: 0644]
ext/standard/tests/general_functions/bug50732.phpt [new file with mode: 0644]

index 526d9e98cc9f91f795d00b11c851df11dd105ff0..e5fb467bb2350e0dafb784d4386a396386cb9886 100644 (file)
@@ -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 (file)
index 0000000..01ee161
--- /dev/null
@@ -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 (file)
index 0000000..ed8341d
--- /dev/null
@@ -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"
+}