]> granicus.if.org Git - php/commitdiff
Restore support for unquoted -d options
authorIlia Alshanetsky <iliaa@php.net>
Fri, 22 Sep 2006 17:41:09 +0000 (17:41 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Fri, 22 Sep 2006 17:41:09 +0000 (17:41 +0000)
sapi/cgi/cgi_main.c
sapi/cli/php_cli.c

index bd7887b788439e85815106226862aee0ce7ae39e..709e8d918be6276182f040cdeba23cf43c5ee268 100644 (file)
@@ -1065,12 +1065,26 @@ int main(int argc, char *argv[])
                        case 'd': { 
                                /* define ini entries on command line */
                                int len = strlen(php_optarg);
-
-                               if (strchr(php_optarg, '=')) {
-                                       cgi_sapi_module.ini_entries = realloc(cgi_sapi_module.ini_entries, ini_entries_len + len + sizeof("\n\0"));
-                                       memcpy(cgi_sapi_module.ini_entries + ini_entries_len, php_optarg, len);
-                                       memcpy(cgi_sapi_module.ini_entries + ini_entries_len + len, "\n\0", sizeof("\n\0"));
-                                       ini_entries_len += len + sizeof("\n\0") - 2;
+                               char *val;
+
+                               if ((val = strchr(php_optarg, '='))) {
+                                       val++;
+                                       if (!isalnum(*val) && *val != '"' && *val != '\'' && *val != '\0') {
+                                               cli_sapi_module.ini_entries = realloc(cli_sapi_module.ini_entries, ini_entries_len + len + sizeof("\"\"\n\0"));
+                                               memcpy(cli_sapi_module.ini_entries + ini_entries_len, php_optarg, (val - php_optarg));
+                                               ini_entries_len += (val - php_optarg);
+                                               memcpy(cli_sapi_module.ini_entries + ini_entries_len, "\"", 1);
+                                               ini_entries_len++;
+                                               memcpy(cli_sapi_module.ini_entries + ini_entries_len, val, len - (val - php_optarg));
+                                               ini_entries_len += len - (val - php_optarg);
+                                               memcpy(cli_sapi_module.ini_entries + ini_entries_len, "\"\n\0", sizeof("\"\n\0"));
+                                               ini_entries_len += sizeof("\n\0\"") - 2;
+                                       } else {
+                                               cli_sapi_module.ini_entries = realloc(cli_sapi_module.ini_entries, ini_entries_len + len + sizeof("\n\0"));
+                                               memcpy(cli_sapi_module.ini_entries + ini_entries_len, php_optarg, len);
+                                               memcpy(cli_sapi_module.ini_entries + ini_entries_len + len, "\n\0", sizeof("\n\0"));
+                                               ini_entries_len += len + sizeof("\n\0") - 2;
+                                       }
                                } else {
                                        cgi_sapi_module.ini_entries = realloc(cgi_sapi_module.ini_entries, ini_entries_len + len + sizeof("=1\n\0"));
                                        memcpy(cgi_sapi_module.ini_entries + ini_entries_len, php_optarg, len);
index bec69c8b4cd6ddc64fa926dfd7bc448dbba939b8..f8a81080e2b0dc3ce74d68139e212eb63dcf8e9c 100644 (file)
@@ -645,12 +645,26 @@ int main(int argc, char *argv[])
                case 'd': {
                                /* define ini entries on command line */
                                int len = strlen(php_optarg);
-
-                               if (strchr(php_optarg, '=')) {
-                                       cli_sapi_module.ini_entries = realloc(cli_sapi_module.ini_entries, ini_entries_len + len + sizeof("\n\0"));
-                                       memcpy(cli_sapi_module.ini_entries + ini_entries_len, php_optarg, len);
-                                       memcpy(cli_sapi_module.ini_entries + ini_entries_len + len, "\n\0", sizeof("\n\0"));
-                                       ini_entries_len += len + sizeof("\n\0") - 2;
+                               char *val;
+
+                               if ((val = strchr(php_optarg, '='))) {
+                                       val++;
+                                       if (!isalnum(*val) && *val != '"' && *val != '\'' && *val != '\0') {
+                                               cli_sapi_module.ini_entries = realloc(cli_sapi_module.ini_entries, ini_entries_len + len + sizeof("\"\"\n\0"));
+                                               memcpy(cli_sapi_module.ini_entries + ini_entries_len, php_optarg, (val - php_optarg));
+                                               ini_entries_len += (val - php_optarg);
+                                               memcpy(cli_sapi_module.ini_entries + ini_entries_len, "\"", 1);
+                                               ini_entries_len++;
+                                               memcpy(cli_sapi_module.ini_entries + ini_entries_len, val, len - (val - php_optarg));
+                                               ini_entries_len += len - (val - php_optarg);
+                                               memcpy(cli_sapi_module.ini_entries + ini_entries_len, "\"\n\0", sizeof("\"\n\0"));
+                                               ini_entries_len += sizeof("\n\0\"") - 2;
+                                       } else {
+                                               cli_sapi_module.ini_entries = realloc(cli_sapi_module.ini_entries, ini_entries_len + len + sizeof("\n\0"));
+                                               memcpy(cli_sapi_module.ini_entries + ini_entries_len, php_optarg, len);
+                                               memcpy(cli_sapi_module.ini_entries + ini_entries_len + len, "\n\0", sizeof("\n\0"));
+                                               ini_entries_len += len + sizeof("\n\0") - 2;
+                                       }
                                } else {
                                        cli_sapi_module.ini_entries = realloc(cli_sapi_module.ini_entries, ini_entries_len + len + sizeof("=1\n\0"));
                                        memcpy(cli_sapi_module.ini_entries + ini_entries_len, php_optarg, len);