- Fixed bug #22072 (Apache2 sapis do not detect aborted connections). (Ilia)
- Fixed bug #21611 (version_compare() does not support "p" as suffix).
(Stefan Walk)
+- Fixed bug #18291 (escapeshellcmd() can now handle quoted arguments). (Ilia)
- Fixed bug #17414 (pthreads bug workaround). (timo.teras[at]iki.fi)
30 Jul 2003, Version 4.3.3RC2
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 '?':