1
0
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:
Arnaud Le Blanc
2025-09-19 18:13:37 +02:00
3 changed files with 20 additions and 7 deletions

View File

@@ -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")
) {

View File

@@ -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;
}
/* }}} */

View 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"