mirror of
https://github.com/php/php-src.git
synced 2025-08-19 08:49:28 +02:00
Fixed a problem that allowed users to override admin_value's and admin_flag's
This commit is contained in:
parent
9aa38aad45
commit
1abd99a443
2 changed files with 17 additions and 2 deletions
|
@ -548,12 +548,24 @@ static void copy_per_dir_entry(php_per_dir_entry *per_dir_entry)
|
|||
}
|
||||
|
||||
|
||||
static zend_bool should_overwrite_per_dir_entry(php_per_dir_entry *orig_per_dir_entry, php_per_dir_entry *new_per_dir_entry)
|
||||
{
|
||||
if (orig_per_dir_entry->type==PHP_INI_SYSTEM
|
||||
&& new_per_dir_entry->type!=PHP_INI_SYSTEM) {
|
||||
return 0;
|
||||
} else {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void php_destroy_per_dir_info(HashTable *per_dir_info)
|
||||
{
|
||||
zend_hash_destroy(per_dir_info);
|
||||
free(per_dir_info);
|
||||
}
|
||||
|
||||
|
||||
static void *php_create_dir(pool *p, char *dummy)
|
||||
{
|
||||
HashTable *per_dir_info;
|
||||
|
@ -570,8 +582,9 @@ static void *php_merge_dir(pool *p, void *basev, void *addv)
|
|||
{
|
||||
php_per_dir_entry tmp;
|
||||
|
||||
zend_hash_merge((HashTable *) addv, (HashTable *) basev, (void (*)(void *)) copy_per_dir_entry, &tmp, sizeof(php_per_dir_entry), 0);
|
||||
return addv;
|
||||
zend_hash_merge_ex((HashTable *) basev, (HashTable *) addv, (copy_ctor_func_t) copy_per_dir_entry, sizeof(php_per_dir_entry), (zend_bool (*)(void *, void *)) should_overwrite_per_dir_entry);
|
||||
/*zend_hash_merge((HashTable *) addv, (HashTable *) basev, (void (*)(void *)) copy_per_dir_entry, &tmp, sizeof(php_per_dir_entry), 0);*/
|
||||
return basev;
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue