Browse Source

Fixed bug #18291 (escapeshellcmd() can now handle quoted arguments).

PEAR_1_4DEV
Ilia Alshanetsky 23 years ago
parent
commit
02e0e08958
  1. 14
      ext/standard/exec.c

14
ext/standard/exec.c

@ -260,18 +260,28 @@ PHP_FUNCTION(passthru)
char *php_escape_shell_cmd(char *str) {
register int x, y, l;
char *cmd;
char *p = NULL;
l = strlen(str);
cmd = emalloc(2 * l + 1);
for (x = 0, y = 0; x < l; x++) {
switch (str[x]) {
case '"':
case '\'':
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;
case '#': /* This is character-set independent */
case '&':
case ';':
case '`':
case '\'':
case '"':
case '|':
case '*':
case '?':

Loading…
Cancel
Save