fat                                      Fri, 20 Aug 2010 08:33:57 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=302531

Log:
Fix #52609 (INI scanner did not use ZEND_INI_SCANNER_NORMAL)

Bug: http://bugs.php.net/52609 (Assigned) session.save_path in php-fpm does not 
handle ";" in extended format correctly
      
Changed paths:
    U   php/php-src/branches/PHP_5_3/sapi/fpm/fpm/fpm_conf.c
    U   php/php-src/branches/PHP_5_3/sapi/fpm/fpm/fpm_main.c
    U   php/php-src/trunk/sapi/fpm/fpm/fpm_conf.c
    U   php/php-src/trunk/sapi/fpm/fpm/fpm_main.c

Modified: php/php-src/branches/PHP_5_3/sapi/fpm/fpm/fpm_conf.c
===================================================================
--- php/php-src/branches/PHP_5_3/sapi/fpm/fpm/fpm_conf.c        2010-08-20 
06:46:00 UTC (rev 302530)
+++ php/php-src/branches/PHP_5_3/sapi/fpm/fpm/fpm_conf.c        2010-08-20 
08:33:57 UTC (rev 302531)
@@ -114,8 +114,8 @@
 static char *fpm_conf_set_boolean(zval *value, void **config, intptr_t offset) 
/* {{{ */
 {
        char *val = Z_STRVAL_P(value);
-       long value_y = !strcasecmp(val, "yes") || !strcmp(val,  "1") || 
!strcasecmp(val, "on") || !strcasecmp(val, "true");
-       long value_n = !strcasecmp(val, "no")  || !strcmp(val,  "0") || 
!strcasecmp(val, "off") || !strcasecmp(val, "false");
+       long value_y = !strcasecmp(val, "1");
+       long value_n = !strcasecmp(val, "");

        if (!value_y && !value_n) {
                return "invalid boolean value";
@@ -846,7 +846,7 @@
        char *err = NULL;
        void *config;

-       if (!Z_STRVAL_P(key) || !Z_STRVAL_P(value) || !*Z_STRVAL_P(key) || 
!*Z_STRVAL_P(value)) {
+       if (!Z_STRVAL_P(key) || !Z_STRVAL_P(value) || !*Z_STRVAL_P(key)) {
                zlog(ZLOG_STUFF, ZLOG_ERROR, "[%s:%d] Mispell array ?", 
ini_filename, ini_lineno);
                *error = 1;
                return;
@@ -858,14 +858,29 @@
        }

        if (!strcmp("env", Z_STRVAL_P(name))) {
+               if (!*Z_STRVAL_P(value)) {
+                       zlog(ZLOG_STUFF, ZLOG_ERROR, "[%s:%d] Mispell array ? 
(empty value)", ini_filename, ini_lineno);
+                       *error = 1;
+                       return;
+               }
                config = (char *)current_wp->config + offsetof(struct 
fpm_worker_pool_config_s, env);
                err = fpm_conf_set_array(key, value, &config, 0);

        } else if (!strcmp("php_value", Z_STRVAL_P(name))) {
+               if (!*Z_STRVAL_P(value)) {
+                       zlog(ZLOG_STUFF, ZLOG_ERROR, "[%s:%d] Mispell array ? 
(empty value)", ini_filename, ini_lineno);
+                       *error = 1;
+                       return;
+               }
                config = (char *)current_wp->config + offsetof(struct 
fpm_worker_pool_config_s, php_values);
                err = fpm_conf_set_array(key, value, &config, 0);

        } else if (!strcmp("php_admin_value", Z_STRVAL_P(name))) {
+               if (!*Z_STRVAL_P(value)) {
+                       zlog(ZLOG_STUFF, ZLOG_ERROR, "[%s:%d] Mispell array ? 
(empty value)", ini_filename, ini_lineno);
+                       *error = 1;
+                       return;
+               }
                config = (char *)current_wp->config + offsetof(struct 
fpm_worker_pool_config_s, php_admin_values);
                err = fpm_conf_set_array(key, value, &config, 0);

@@ -953,7 +968,7 @@
                buf[n++] = '\n';
                ini_lineno++;
                ini_filename = filename;
-               tmp = zend_parse_ini_string(buf, 1, ZEND_INI_SCANNER_RAW, 
(zend_ini_parser_cb_t)fpm_conf_ini_parser, &error TSRMLS_CC);
+               tmp = zend_parse_ini_string(buf, 1, ZEND_INI_SCANNER_NORMAL, 
(zend_ini_parser_cb_t)fpm_conf_ini_parser, &error TSRMLS_CC);
                ini_filename = filename;
                if (error || tmp == FAILURE) {
                        if (ini_include) free(ini_include);

Modified: php/php-src/branches/PHP_5_3/sapi/fpm/fpm/fpm_main.c
===================================================================
--- php/php-src/branches/PHP_5_3/sapi/fpm/fpm/fpm_main.c        2010-08-20 
06:46:00 UTC (rev 302530)
+++ php/php-src/branches/PHP_5_3/sapi/fpm/fpm/fpm_main.c        2010-08-20 
08:33:57 UTC (rev 302531)
@@ -1372,7 +1372,7 @@
                int mode = ZEND_INI_USER;
                char *tmp;
                spprintf(&tmp, 0, "%s\n", ini);
-               zend_parse_ini_string(tmp, 1, ZEND_INI_SCANNER_RAW, 
(zend_ini_parser_cb_t)fastcgi_ini_parser, &mode TSRMLS_CC);
+               zend_parse_ini_string(tmp, 1, ZEND_INI_SCANNER_NORMAL, 
(zend_ini_parser_cb_t)fastcgi_ini_parser, &mode TSRMLS_CC);
                efree(tmp);
        }

@@ -1381,7 +1381,7 @@
                int mode = ZEND_INI_SYSTEM;
                char *tmp;
                spprintf(&tmp, 0, "%s\n", ini);
-               zend_parse_ini_string(tmp, 1, ZEND_INI_SCANNER_RAW, 
(zend_ini_parser_cb_t)fastcgi_ini_parser, &mode TSRMLS_CC);
+               zend_parse_ini_string(tmp, 1, ZEND_INI_SCANNER_NORMAL, 
(zend_ini_parser_cb_t)fastcgi_ini_parser, &mode TSRMLS_CC);
                efree(tmp);
        }
 }
@@ -1406,7 +1406,7 @@
                return;
        }

-       if (!value || strlen(value) < 1) {
+       if (!value) {
                fprintf(stderr, "Passing INI directive through FastCGI: empty 
value for key '%s'\n", key);
                return;
        }

Modified: php/php-src/trunk/sapi/fpm/fpm/fpm_conf.c
===================================================================
--- php/php-src/trunk/sapi/fpm/fpm/fpm_conf.c   2010-08-20 06:46:00 UTC (rev 
302530)
+++ php/php-src/trunk/sapi/fpm/fpm/fpm_conf.c   2010-08-20 08:33:57 UTC (rev 
302531)
@@ -114,8 +114,8 @@
 static char *fpm_conf_set_boolean(zval *value, void **config, intptr_t offset) 
/* {{{ */
 {
        char *val = Z_STRVAL_P(value);
-       long value_y = !strcasecmp(val, "yes") || !strcmp(val,  "1") || 
!strcasecmp(val, "on") || !strcasecmp(val, "true");
-       long value_n = !strcasecmp(val, "no")  || !strcmp(val,  "0") || 
!strcasecmp(val, "off") || !strcasecmp(val, "false");
+       long value_y = !strcasecmp(val, "1");
+       long value_n = !strcasecmp(val, "");

        if (!value_y && !value_n) {
                return "invalid boolean value";
@@ -846,7 +846,7 @@
        char *err = NULL;
        void *config;

-       if (!Z_STRVAL_P(key) || !Z_STRVAL_P(value) || !*Z_STRVAL_P(key) || 
!*Z_STRVAL_P(value)) {
+       if (!Z_STRVAL_P(key) || !Z_STRVAL_P(value) || !*Z_STRVAL_P(key)) {
                zlog(ZLOG_STUFF, ZLOG_ERROR, "[%s:%d] Mispell array ?", 
ini_filename, ini_lineno);
                *error = 1;
                return;
@@ -858,14 +858,29 @@
        }

        if (!strcmp("env", Z_STRVAL_P(name))) {
+               if (!*Z_STRVAL_P(value)) {
+                       zlog(ZLOG_STUFF, ZLOG_ERROR, "[%s:%d] Mispell array ? 
(empty value)", ini_filename, ini_lineno);
+                       *error = 1;
+                       return;
+               }
                config = (char *)current_wp->config + offsetof(struct 
fpm_worker_pool_config_s, env);
                err = fpm_conf_set_array(key, value, &config, 0);

        } else if (!strcmp("php_value", Z_STRVAL_P(name))) {
+               if (!*Z_STRVAL_P(value)) {
+                       zlog(ZLOG_STUFF, ZLOG_ERROR, "[%s:%d] Mispell array ? 
(empty value)", ini_filename, ini_lineno);
+                       *error = 1;
+                       return;
+               }
                config = (char *)current_wp->config + offsetof(struct 
fpm_worker_pool_config_s, php_values);
                err = fpm_conf_set_array(key, value, &config, 0);

        } else if (!strcmp("php_admin_value", Z_STRVAL_P(name))) {
+               if (!*Z_STRVAL_P(value)) {
+                       zlog(ZLOG_STUFF, ZLOG_ERROR, "[%s:%d] Mispell array ? 
(empty value)", ini_filename, ini_lineno);
+                       *error = 1;
+                       return;
+               }
                config = (char *)current_wp->config + offsetof(struct 
fpm_worker_pool_config_s, php_admin_values);
                err = fpm_conf_set_array(key, value, &config, 0);

@@ -953,7 +968,7 @@
                buf[n++] = '\n';
                ini_lineno++;
                ini_filename = filename;
-               tmp = zend_parse_ini_string(buf, 1, ZEND_INI_SCANNER_RAW, 
(zend_ini_parser_cb_t)fpm_conf_ini_parser, &error TSRMLS_CC);
+               tmp = zend_parse_ini_string(buf, 1, ZEND_INI_SCANNER_NORMAL, 
(zend_ini_parser_cb_t)fpm_conf_ini_parser, &error TSRMLS_CC);
                ini_filename = filename;
                if (error || tmp == FAILURE) {
                        if (ini_include) free(ini_include);

Modified: php/php-src/trunk/sapi/fpm/fpm/fpm_main.c
===================================================================
--- php/php-src/trunk/sapi/fpm/fpm/fpm_main.c   2010-08-20 06:46:00 UTC (rev 
302530)
+++ php/php-src/trunk/sapi/fpm/fpm/fpm_main.c   2010-08-20 08:33:57 UTC (rev 
302531)
@@ -1370,7 +1370,7 @@
                int mode = ZEND_INI_USER;
                char *tmp;
                spprintf(&tmp, 0, "%s\n", ini);
-               zend_parse_ini_string(tmp, 1, ZEND_INI_SCANNER_RAW, 
(zend_ini_parser_cb_t)fastcgi_ini_parser, &mode TSRMLS_CC);
+               zend_parse_ini_string(tmp, 1, ZEND_INI_SCANNER_NORMAL, 
(zend_ini_parser_cb_t)fastcgi_ini_parser, &mode TSRMLS_CC);
                efree(tmp);
        }

@@ -1379,7 +1379,7 @@
                int mode = ZEND_INI_SYSTEM;
                char *tmp;
                spprintf(&tmp, 0, "%s\n", ini);
-               zend_parse_ini_string(tmp, 1, ZEND_INI_SCANNER_RAW, 
(zend_ini_parser_cb_t)fastcgi_ini_parser, &mode TSRMLS_CC);
+               zend_parse_ini_string(tmp, 1, ZEND_INI_SCANNER_NORMAL, 
(zend_ini_parser_cb_t)fastcgi_ini_parser, &mode TSRMLS_CC);
                efree(tmp);
        }
 }
@@ -1404,7 +1404,7 @@
                return;
        }

-       if (!value || strlen(value) < 1) {
+       if (!value) {
                fprintf(stderr, "Passing INI directive through FastCGI: empty 
value for key '%s'\n", key);
                return;
        }

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to