diff options
author | Rui Hirokawa <hirokawa@php.net> | 2011-11-11 14:52:56 +0000 |
---|---|---|
committer | Rui Hirokawa <hirokawa@php.net> | 2011-11-11 14:52:56 +0000 |
commit | 40a951ccad8da0064bc05baf8d72450089961b19 (patch) | |
tree | a8befd8ef4f62fb986f0757988c855955d40e9db /ext/standard/exec.c | |
parent | d39dbdee24d05e23183dafdfb06982777ef6f934 (diff) | |
download | php-git-40a951ccad8da0064bc05baf8d72450089961b19.tar.gz |
revert changes to fix bug #60116.
Diffstat (limited to 'ext/standard/exec.c')
-rw-r--r-- | ext/standard/exec.c | 47 |
1 files changed, 8 insertions, 39 deletions
diff --git a/ext/standard/exec.c b/ext/standard/exec.c index 3b6d41167d..eb80603395 100644 --- a/ext/standard/exec.c +++ b/ext/standard/exec.c @@ -50,16 +50,6 @@ #include <unistd.h> #endif -/* {{{ register_exec_constants - * */ -void register_exec_constants(INIT_FUNC_ARGS) -{ - REGISTER_LONG_CONSTANT("ESCAPE_CMD_PAIR", ESCAPE_CMD_PAIR, CONST_PERSISTENT|CONST_CS); - REGISTER_LONG_CONSTANT("ESCAPE_CMD_END", ESCAPE_CMD_END, CONST_PERSISTENT|CONST_CS); - REGISTER_LONG_CONSTANT("ESCAPE_CMD_ALL", ESCAPE_CMD_ALL, CONST_PERSISTENT|CONST_CS); -} -/* }}} */ - /* {{{ php_exec * If type==0, only last line of output is returned (exec) * If type==1, all lines will be printed and last lined returned (system) @@ -248,7 +238,7 @@ PHP_FUNCTION(passthru) *NOT* safe for binary strings */ -PHPAPI char *php_escape_shell_cmd_ex(char *str, int flag) +PHPAPI char *php_escape_shell_cmd(char *str) { register int x, y, l = strlen(str); char *cmd; @@ -276,25 +266,13 @@ PHPAPI char *php_escape_shell_cmd_ex(char *str, int flag) #ifndef PHP_WIN32 case '"': case '\'': - if (flag == ESCAPE_CMD_ALL) { + if (!p && (p = memchr(str + x + 1, str[x], l - x - 1))) { + /* noop */ + } else if (p && *p == str[x]) { + p = NULL; + } else { cmd[y++] = '\\'; cmd[y++] = str[x]; - } else if (flag == ESCAPE_CMD_END) { - if ((x == 0 || x == l - 1) && (str[0] == str[l-1])) { - cmd[y++] = str[x]; - } else { - cmd[y++] = '\\'; - cmd[y++] = str[x]; - } - } else { /* ESCAPE_CMD_PAIR */ - if (!p && (p = memchr(str + x + 1, str[x], l - x - 1))) { - /* noop */ - } else if (p && *p == str[x]) { - p = NULL; - } else { - cmd[y++] = '\\'; - } - cmd[y++] = str[x]; } break; #else @@ -349,14 +327,6 @@ PHPAPI char *php_escape_shell_cmd_ex(char *str, int flag) } /* }}} */ -/* {{{ php_escape_shell_cmd - */ -PHPAPI char *php_escape_shell_cmd(char *str) -{ - return php_escape_shell_cmd_ex(str, ESCAPE_CMD_PAIR); -} -/* }}} */ - /* {{{ php_escape_shell_arg */ PHPAPI char *php_escape_shell_arg(char *str) @@ -427,15 +397,14 @@ PHP_FUNCTION(escapeshellcmd) { char *command; int command_len; - long flag = ESCAPE_CMD_PAIR; char *cmd = NULL; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|l", &command, &command_len, &flag) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &command, &command_len) == FAILURE) { return; } if (command_len) { - cmd = php_escape_shell_cmd_ex(command, flag); + cmd = php_escape_shell_cmd(command); RETVAL_STRING(cmd, 0); } else { RETVAL_EMPTY_STRING(); |