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