mirror of
https://github.com/php/php-src.git
synced 2026-03-24 00:02:20 +01:00
Merge branch 'PHP-8.4'
* PHP-8.4: Fix GH-19480: error_log php.ini cannot be unset when open_basedir is configured
This commit is contained in:
@@ -1988,10 +1988,8 @@ PHP_FUNCTION(ini_set)
|
||||
/* open basedir check */
|
||||
if (PG(open_basedir)) {
|
||||
if (
|
||||
zend_string_equals_literal(varname, "error_log")
|
||||
|| zend_string_equals_literal(varname, "java.class.path")
|
||||
zend_string_equals_literal(varname, "java.class.path")
|
||||
|| zend_string_equals_literal(varname, "java.home")
|
||||
|| zend_string_equals_literal(varname, "mail.log")
|
||||
|| zend_string_equals_literal(varname, "java.library.path")
|
||||
|| zend_string_equals_literal(varname, "vpopmail.directory")
|
||||
) {
|
||||
|
||||
10
main/main.c
10
main/main.c
@@ -697,12 +697,13 @@ static PHP_INI_MH(OnUpdateErrorLog)
|
||||
{
|
||||
/* Only do the open_basedir check at runtime */
|
||||
if ((stage == PHP_INI_STAGE_RUNTIME || stage == PHP_INI_STAGE_HTACCESS) &&
|
||||
new_value && zend_string_equals_literal(new_value, "syslog")) {
|
||||
new_value && !zend_string_equals_literal(new_value, "syslog") && ZSTR_LEN(new_value) > 0) {
|
||||
if (PG(open_basedir) && php_check_open_basedir(ZSTR_VAL(new_value))) {
|
||||
return FAILURE;
|
||||
}
|
||||
}
|
||||
OnUpdateString(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
|
||||
char **p = (char **) ZEND_INI_GET_ADDR();
|
||||
*p = new_value && ZSTR_LEN(new_value) > 0 ? ZSTR_VAL(new_value) : NULL;
|
||||
return SUCCESS;
|
||||
}
|
||||
/* }}} */
|
||||
@@ -711,12 +712,13 @@ static PHP_INI_MH(OnUpdateErrorLog)
|
||||
static PHP_INI_MH(OnUpdateMailLog)
|
||||
{
|
||||
/* Only do the open_basedir check at runtime */
|
||||
if ((stage == PHP_INI_STAGE_RUNTIME || stage == PHP_INI_STAGE_HTACCESS) && new_value) {
|
||||
if ((stage == PHP_INI_STAGE_RUNTIME || stage == PHP_INI_STAGE_HTACCESS) && new_value && ZSTR_LEN(new_value) > 0) {
|
||||
if (PG(open_basedir) && php_check_open_basedir(ZSTR_VAL(new_value))) {
|
||||
return FAILURE;
|
||||
}
|
||||
}
|
||||
OnUpdateString(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
|
||||
char **p = (char **) ZEND_INI_GET_ADDR();
|
||||
*p = new_value && ZSTR_LEN(new_value) > 0 ? ZSTR_VAL(new_value) : NULL;
|
||||
return SUCCESS;
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
13
tests/security/error_log_special_values.phpt
Normal file
13
tests/security/error_log_special_values.phpt
Normal file
@@ -0,0 +1,13 @@
|
||||
--TEST--
|
||||
Setting error_log to special values with open_basedir enabled
|
||||
--INI--
|
||||
open_basedir=foo
|
||||
error_log=
|
||||
--FILE--
|
||||
<?php
|
||||
var_dump(ini_set("error_log", "syslog"));
|
||||
var_dump(ini_set("error_log", ""));
|
||||
?>
|
||||
--EXPECT--
|
||||
string(0) ""
|
||||
string(6) "syslog"
|
||||
Reference in New Issue
Block a user