iliaa                                    Wed, 13 Jan 2010 13:44:58 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=293502

Log:
Fixed bug #50732 (exec() adds single byte twice to $output array).

Bug: http://bugs.php.net/50732 (Assigned) exec() adds single byte twice to 
$output array
      
Changed paths:
    U   php/php-src/branches/PHP_5_2/NEWS
    U   php/php-src/branches/PHP_5_2/ext/standard/exec.c
    A   
php/php-src/branches/PHP_5_2/ext/standard/tests/general_functions/bug49847.phpt
    A   
php/php-src/branches/PHP_5_2/ext/standard/tests/general_functions/bug50732.phpt
    U   php/php-src/branches/PHP_5_3/NEWS
    U   php/php-src/branches/PHP_5_3/ext/standard/exec.c
    A   
php/php-src/branches/PHP_5_3/ext/standard/tests/general_functions/bug49847.phpt
    A   
php/php-src/branches/PHP_5_3/ext/standard/tests/general_functions/bug50732.phpt
    U   php/php-src/trunk/ext/standard/exec.c
    A   php/php-src/trunk/ext/standard/tests/general_functions/bug49847.phpt
    A   php/php-src/trunk/ext/standard/tests/general_functions/bug50732.phpt

Modified: php/php-src/branches/PHP_5_2/NEWS
===================================================================
--- php/php-src/branches/PHP_5_2/NEWS	2010-01-13 13:25:31 UTC (rev 293501)
+++ php/php-src/branches/PHP_5_2/NEWS	2010-01-13 13:44:58 UTC (rev 293502)
@@ -13,6 +13,7 @@

 - Fixed build of mysqli with MySQL 5.5.0-m2. (Andrey)

+- Fixed bug #50732 (exec() adds single byte twice to $output array). (Ilia)
 - Fixed bug #50728 (All PDOExceptions hardcode 'code' property to 0). (Joey,
   Ilia)
 - Fixed bug #50680 (strtotime() does not support eighth ordinal number).

Modified: php/php-src/branches/PHP_5_2/ext/standard/exec.c
===================================================================
--- php/php-src/branches/PHP_5_2/ext/standard/exec.c	2010-01-13 13:25:31 UTC (rev 293501)
+++ php/php-src/branches/PHP_5_2/ext/standard/exec.c	2010-01-13 13:44:58 UTC (rev 293502)
@@ -118,7 +118,7 @@

 	if (type != 3) {
 		b = buf;
-
+
 		while (php_stream_get_line(stream, b, EXEC_INPUT_BUF, &bufl)) {
 			/* no new line found, let's read some more */
 			if (b[bufl - 1] != '\n' && !php_stream_eof(stream)) {
@@ -154,7 +154,7 @@
 		}
 		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 != (int)(bufl - 1)) {

Added: php/php-src/branches/PHP_5_2/ext/standard/tests/general_functions/bug49847.phpt
===================================================================
--- php/php-src/branches/PHP_5_2/ext/standard/tests/general_functions/bug49847.phpt	                        (rev 0)
+++ php/php-src/branches/PHP_5_2/ext/standard/tests/general_functions/bug49847.phpt	2010-01-13 13:44:58 UTC (rev 293502)
@@ -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"
+}

Added: php/php-src/branches/PHP_5_2/ext/standard/tests/general_functions/bug50732.phpt
===================================================================
--- php/php-src/branches/PHP_5_2/ext/standard/tests/general_functions/bug50732.phpt	                        (rev 0)
+++ php/php-src/branches/PHP_5_2/ext/standard/tests/general_functions/bug50732.phpt	2010-01-13 13:44:58 UTC (rev 293502)
@@ -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"
+}

Modified: php/php-src/branches/PHP_5_3/NEWS
===================================================================
--- php/php-src/branches/PHP_5_3/NEWS	2010-01-13 13:25:31 UTC (rev 293501)
+++ php/php-src/branches/PHP_5_3/NEWS	2010-01-13 13:44:58 UTC (rev 293502)
@@ -11,6 +11,7 @@
   (Ilia)
 - Added stream_resolve_include_path(). (Mikko)

+- Fixed bug #50732 (exec() adds single byte twice to $output array). (Ilia)
 - Fixed bug #50728 (All PDOExceptions hardcode 'code' property to 0). (Joey,
   Ilia)
 - Fixed bug #50680 (strtotime() does not support eighth ordinal number).

Modified: php/php-src/branches/PHP_5_3/ext/standard/exec.c
===================================================================
--- php/php-src/branches/PHP_5_3/ext/standard/exec.c	2010-01-13 13:25:31 UTC (rev 293501)
+++ php/php-src/branches/PHP_5_3/ext/standard/exec.c	2010-01-13 13:44:58 UTC (rev 293502)
@@ -121,7 +121,7 @@

 	if (type != 3) {
 		b = buf;
-
+
 		while (php_stream_get_line(stream, b, EXEC_INPUT_BUF, &bufl)) {
 			/* no new line found, let's read some more */
 			if (b[bufl - 1] != '\n' && !php_stream_eof(stream)) {
@@ -157,7 +157,7 @@
 		}
 		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 != (int)(bufl - 1)) {

Added: php/php-src/branches/PHP_5_3/ext/standard/tests/general_functions/bug49847.phpt
===================================================================
--- php/php-src/branches/PHP_5_3/ext/standard/tests/general_functions/bug49847.phpt	                        (rev 0)
+++ php/php-src/branches/PHP_5_3/ext/standard/tests/general_functions/bug49847.phpt	2010-01-13 13:44:58 UTC (rev 293502)
@@ -0,0 +1,36 @@
+--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"
+}
+--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"
+}
+--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"
+}

Added: php/php-src/branches/PHP_5_3/ext/standard/tests/general_functions/bug50732.phpt
===================================================================
--- php/php-src/branches/PHP_5_3/ext/standard/tests/general_functions/bug50732.phpt	                        (rev 0)
+++ php/php-src/branches/PHP_5_3/ext/standard/tests/general_functions/bug50732.phpt	2010-01-13 13:44:58 UTC (rev 293502)
@@ -0,0 +1,36 @@
+--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"
+}
+--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"
+}
+--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"
+}

Modified: php/php-src/trunk/ext/standard/exec.c
===================================================================
--- php/php-src/trunk/ext/standard/exec.c	2010-01-13 13:25:31 UTC (rev 293501)
+++ php/php-src/trunk/ext/standard/exec.c	2010-01-13 13:44:58 UTC (rev 293502)
@@ -130,7 +130,7 @@
 		}
 		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)) {

Added: php/php-src/trunk/ext/standard/tests/general_functions/bug49847.phpt
===================================================================
--- php/php-src/trunk/ext/standard/tests/general_functions/bug49847.phpt	                        (rev 0)
+++ php/php-src/trunk/ext/standard/tests/general_functions/bug49847.phpt	2010-01-13 13:44:58 UTC (rev 293502)
@@ -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"
+}

Added: php/php-src/trunk/ext/standard/tests/general_functions/bug50732.phpt
===================================================================
--- php/php-src/trunk/ext/standard/tests/general_functions/bug50732.phpt	                        (rev 0)
+++ php/php-src/trunk/ext/standard/tests/general_functions/bug50732.phpt	2010-01-13 13:44:58 UTC (rev 293502)
@@ -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"
+}
-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to