stas Fri Aug 3 01:40:06 2007 UTC Modified files: /php-src/main main.c php_ini.h /ZendEngine2 zend_ini.h /php-src/sapi/apache mod_php.c /php-src/sapi/apache2handler apache_config.c /php-src/ext/session mod_files.c session.c Log: MF5: fix for access control with .htaccess
http://cvs.php.net/viewvc.cgi/php-src/main/main.c?r1=1.743&r2=1.744&diff_format=u Index: php-src/main/main.c diff -u php-src/main/main.c:1.743 php-src/main/main.c:1.744 --- php-src/main/main.c:1.743 Wed Aug 1 23:54:06 2007 +++ php-src/main/main.c Fri Aug 3 01:40:05 2007 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: main.c,v 1.743 2007/08/01 23:54:06 stas Exp $ */ +/* $Id: main.c,v 1.744 2007/08/03 01:40:05 stas Exp $ */ /* {{{ includes */ @@ -416,6 +416,24 @@ } /* }}} */ +/* {{{ PHP_INI_MH + */ +static PHP_INI_MH(OnUpdateErrorLog) +{ + /* Only do the safemode/open_basedir check at runtime */ + if ((stage == PHP_INI_STAGE_RUNTIME || stage == PHP_INI_STAGE_HTACCESS) && + strcmp(new_value, "syslog")) { + + if (PG(open_basedir) && php_check_open_basedir(new_value TSRMLS_CC)) { + return FAILURE; + } + + } + OnUpdateString(entry, new_value, new_value_length, mh_arg1, mh_arg2, mh_arg3, stage TSRMLS_CC); + return SUCCESS; +} +/* }}} */ + /* * Need to be read from the environment (?): * PHP_AUTO_PREPEND_FILE @@ -481,7 +499,7 @@ STD_PHP_INI_ENTRY("default_charset", SAPI_DEFAULT_CHARSET, PHP_INI_ALL, OnUpdateDefaultCharset, default_charset, sapi_globals_struct,sapi_globals) STD_PHP_INI_ENTRY("default_mimetype", SAPI_DEFAULT_MIMETYPE, PHP_INI_ALL, OnUpdateDefaultMimetype, default_mimetype, sapi_globals_struct,sapi_globals) ZEND_INI_ENTRY("unicode.output_encoding", NULL, ZEND_INI_ALL, OnUpdateOutputEncoding) - STD_PHP_INI_ENTRY("error_log", NULL, PHP_INI_ALL, OnUpdateString, error_log, php_core_globals, core_globals) + STD_PHP_INI_ENTRY("error_log", NULL, PHP_INI_ALL, OnUpdateErrorLog, error_log, php_core_globals, core_globals) STD_PHP_INI_ENTRY("extension_dir", PHP_EXTENSION_DIR, PHP_INI_SYSTEM, OnUpdateStringUnempty, extension_dir, php_core_globals, core_globals) STD_PHP_INI_ENTRY("include_path", PHP_INCLUDE_PATH, PHP_INI_ALL, OnUpdateStringUnempty, include_path, php_core_globals, core_globals) PHP_INI_ENTRY("max_execution_time", "30", PHP_INI_ALL, OnUpdateTimeout) http://cvs.php.net/viewvc.cgi/php-src/main/php_ini.h?r1=1.49&r2=1.50&diff_format=u Index: php-src/main/php_ini.h diff -u php-src/main/php_ini.h:1.49 php-src/main/php_ini.h:1.50 --- php-src/main/php_ini.h:1.49 Mon Jan 1 09:29:35 2007 +++ php-src/main/php_ini.h Fri Aug 3 01:40:05 2007 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_ini.h,v 1.49 2007/01/01 09:29:35 sebastian Exp $ */ +/* $Id: php_ini.h,v 1.50 2007/08/03 01:40:05 stas Exp $ */ #ifndef PHP_INI_H #define PHP_INI_H @@ -65,6 +65,7 @@ #define PHP_INI_STAGE_ACTIVATE ZEND_INI_STAGE_ACTIVATE #define PHP_INI_STAGE_DEACTIVATE ZEND_INI_STAGE_DEACTIVATE #define PHP_INI_STAGE_RUNTIME ZEND_INI_STAGE_RUNTIME +#define PHP_INI_STAGE_HTACCESS ZEND_INI_STAGE_HTACCESS #define php_ini_boolean_displayer_cb zend_ini_boolean_displayer_cb #define php_ini_color_displayer_cb zend_ini_color_displayer_cb http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_ini.h?r1=1.40&r2=1.41&diff_format=u Index: ZendEngine2/zend_ini.h diff -u ZendEngine2/zend_ini.h:1.40 ZendEngine2/zend_ini.h:1.41 --- ZendEngine2/zend_ini.h:1.40 Mon Jan 1 09:29:21 2007 +++ ZendEngine2/zend_ini.h Fri Aug 3 01:40:05 2007 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: zend_ini.h,v 1.40 2007/01/01 09:29:21 sebastian Exp $ */ +/* $Id: zend_ini.h,v 1.41 2007/08/03 01:40:05 stas Exp $ */ #ifndef ZEND_INI_H #define ZEND_INI_H @@ -190,6 +190,7 @@ #define ZEND_INI_STAGE_ACTIVATE (1<<2) #define ZEND_INI_STAGE_DEACTIVATE (1<<3) #define ZEND_INI_STAGE_RUNTIME (1<<4) +#define ZEND_INI_STAGE_HTACCESS (1<<5) /* INI parsing engine */ typedef void (*zend_ini_parser_cb_t)(zval *arg1, zval *arg2, int callback_type, void *arg); http://cvs.php.net/viewvc.cgi/php-src/sapi/apache/mod_php.c?r1=1.3&r2=1.4&diff_format=u Index: php-src/sapi/apache/mod_php.c diff -u php-src/sapi/apache/mod_php.c:1.3 php-src/sapi/apache/mod_php.c:1.4 --- php-src/sapi/apache/mod_php.c:1.3 Mon Jun 18 15:57:00 2007 +++ php-src/sapi/apache/mod_php.c Fri Aug 3 01:40:05 2007 @@ -17,7 +17,7 @@ | PHP 4.0 patches by Zeev Suraski <[EMAIL PROTECTED]> | +----------------------------------------------------------------------+ */ -/* $Id: mod_php.c,v 1.3 2007/06/18 15:57:00 scottmac Exp $ */ +/* $Id: mod_php.c,v 1.4 2007/08/03 01:40:05 stas Exp $ */ #include "php_apache_http.h" #include "http_conf_globals.h" @@ -76,6 +76,7 @@ uint key_length; uint value_length; int type; + char htaccess; } php_per_dir_entry; /* some systems are missing these from their header files */ @@ -540,7 +541,7 @@ */ static int php_apache_alter_ini_entries(php_per_dir_entry *per_dir_entry TSRMLS_DC) { - zend_alter_ini_entry(per_dir_entry->key, per_dir_entry->key_length+1, per_dir_entry->value, per_dir_entry->value_length, per_dir_entry->type, PHP_INI_STAGE_ACTIVATE); + zend_alter_ini_entry(per_dir_entry->key, per_dir_entry->key_length+1, per_dir_entry->value, per_dir_entry->value_length, per_dir_entry->type, data->htaccess?PHP_INI_STAGE_HTACCESS:PHP_INI_STAGE_ACTIVATE); return 0; } /* }}} */ @@ -776,6 +777,7 @@ php_apache_startup(&apache_sapi_module); } per_dir_entry.type = mode; + per_dir_entry.htaccess = ((cmd->override & (RSRC_CONF|ACCESS_CONF)) == 0); if (strcasecmp(arg2, "none") == 0) { arg2 = ""; http://cvs.php.net/viewvc.cgi/php-src/sapi/apache2handler/apache_config.c?r1=1.11&r2=1.12&diff_format=u Index: php-src/sapi/apache2handler/apache_config.c diff -u php-src/sapi/apache2handler/apache_config.c:1.11 php-src/sapi/apache2handler/apache_config.c:1.12 --- php-src/sapi/apache2handler/apache_config.c:1.11 Mon Jan 1 09:29:36 2007 +++ php-src/sapi/apache2handler/apache_config.c Fri Aug 3 01:40:05 2007 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: apache_config.c,v 1.11 2007/01/01 09:29:36 sebastian Exp $ */ +/* $Id: apache_config.c,v 1.12 2007/08/03 01:40:05 stas Exp $ */ #define ZEND_INCLUDE_FULL_WINDOWS_HEADERS @@ -51,6 +51,7 @@ char *value; size_t value_len; char status; + char htaccess; } php_dir_entry; static const char *real_value_hnd(cmd_parms *cmd, void *dummy, const char *name, const char *value, int status) @@ -67,7 +68,8 @@ e.value = apr_pstrdup(cmd->pool, value); e.value_len = strlen(value); e.status = status; - + e.htaccess = ((cmd->override & (RSRC_CONF|ACCESS_CONF)) == 0); + zend_hash_update(&d->config, (char *) name, strlen(name) + 1, &e, sizeof(e), NULL); return NULL; } @@ -170,7 +172,7 @@ zend_hash_move_forward(&d->config)) { zend_hash_get_current_data(&d->config, (void **) &data); phpapdebug((stderr, "APPLYING (%s)(%s)\n", str.s, data->value)); - if (zend_alter_ini_entry(str.s, str_len, data->value, data->value_len, data->status, PHP_INI_STAGE_ACTIVATE) == FAILURE) { + if (zend_alter_ini_entry(str, str_len, data->value, data->value_len, data->status, data->htaccess?PHP_INI_STAGE_HTACCESS:PHP_INI_STAGE_ACTIVATE) == FAILURE) { phpapdebug((stderr, "..FAILED\n")); } } http://cvs.php.net/viewvc.cgi/php-src/ext/session/mod_files.c?r1=1.112&r2=1.113&diff_format=u Index: php-src/ext/session/mod_files.c diff -u php-src/ext/session/mod_files.c:1.112 php-src/ext/session/mod_files.c:1.113 --- php-src/ext/session/mod_files.c:1.112 Tue Jul 10 17:52:32 2007 +++ php-src/ext/session/mod_files.c Fri Aug 3 01:40:05 2007 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: mod_files.c,v 1.112 2007/07/10 17:52:32 stas Exp $ */ +/* $Id: mod_files.c,v 1.113 2007/08/03 01:40:05 stas Exp $ */ #include "php.h" @@ -313,10 +313,6 @@ } save_path = argv[argc - 1]; - if (PG(open_basedir) && php_check_open_basedir(save_path TSRMLS_CC)) { - return FAILURE; - } - data = ecalloc(1, sizeof(*data)); data->fd = -1; http://cvs.php.net/viewvc.cgi/php-src/ext/session/session.c?r1=1.474&r2=1.475&diff_format=u Index: php-src/ext/session/session.c diff -u php-src/ext/session/session.c:1.474 php-src/ext/session/session.c:1.475 --- php-src/ext/session/session.c:1.474 Sun Jun 17 14:26:16 2007 +++ php-src/ext/session/session.c Fri Aug 3 01:40:05 2007 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: session.c,v 1.474 2007/06/17 14:26:16 iliaa Exp $ */ +/* $Id: session.c,v 1.475 2007/08/03 01:40:05 stas Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -542,7 +542,7 @@ static PHP_INI_MH(OnUpdateSaveDir) { /* Only do the safemode/open_basedir check at runtime */ - if (stage == PHP_INI_STAGE_RUNTIME) { + if (stage == PHP_INI_STAGE_RUNTIME || stage == PHP_INI_STAGE_HTACCESS) { char *p; if (memchr(new_value, '\0', new_value_length) != NULL) {
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php