From: Sean DuBois Date: Sun, 13 Mar 2016 03:15:54 +0000 (-0600) Subject: Fix bug #71624, PHP_MODE_PROCESS_STDIN (CLI SAPI called with '-R') did not properly... X-Git-Tag: php-7.0.5RC1~5 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=68ebfc87ad4f3842cd680c32ab307344c8659ce3;p=php Fix bug #71624, PHP_MODE_PROCESS_STDIN (CLI SAPI called with '-R') did not properly set $argi and $argn --- diff --git a/sapi/cli/php_cli.c b/sapi/cli/php_cli.c index 92f1f64bf4..5d789d2626 100644 --- a/sapi/cli/php_cli.c +++ b/sapi/cli/php_cli.c @@ -1018,16 +1018,15 @@ static int do_cli(int argc, char **argv) /* {{{ */ if (exec_begin && zend_eval_string_ex(exec_begin, NULL, "Command line begin code", 1) == FAILURE) { exit_status=254; } - ZVAL_LONG(&argi, index); - zend_hash_str_update(&EG(symbol_table), "argi", sizeof("argi")-1, &argi); while (exit_status == SUCCESS && (input=php_stream_gets(s_in_process, NULL, 0)) != NULL) { len = strlen(input); while (len > 0 && len-- && (input[len]=='\n' || input[len]=='\r')) { input[len] = '\0'; } - ZVAL_STRINGL(&argn, input, len); + ZVAL_STRINGL(&argn, input, len + 1); zend_hash_str_update(&EG(symbol_table), "argn", sizeof("argn")-1, &argn); - Z_LVAL(argi) = ++index; + ZVAL_LONG(&argi, ++index); + zend_hash_str_update(&EG(symbol_table), "argi", sizeof("argi")-1, &argi); if (exec_run) { if (zend_eval_string_ex(exec_run, NULL, "Command line run code", 1) == FAILURE) { exit_status=254; diff --git a/sapi/cli/tests/bug71624.phpt b/sapi/cli/tests/bug71624.phpt new file mode 100644 index 0000000000..aa4c69da12 --- /dev/null +++ b/sapi/cli/tests/bug71624.phpt @@ -0,0 +1,43 @@ +--TEST-- +Bug #61977 Test that -R properly sets argi and argn +--SKIPIF-- + +--FILE-- + +--EXPECT-- +string(6) "1 +2 +3 +" +string(15) "foo +test +hello +" +Done