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

index dc31e9729cddd4eba643362de9bf1ee38e3270d7..11bcd453ba37b15b1f4865461923665dd6fc13df 100644 (file)
@@ -1028,12 +1028,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 0b4a3255f7d199140df823bb41ba5acfc8229fda..9e8e26e3744a49c271dd6eabb7190952c8219a71 100644 (file)
@@ -655,12 +655,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);