From: Ilia Alshanetsky Date: Thu, 13 Mar 2008 16:01:46 +0000 (+0000) Subject: MFB: MFB: Fixed bug #43677 (Inconsistent behaviour of include_path set with X-Git-Tag: RELEASE_2_0_0a1~143 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=12c56d076481686df151236dcd40eb1ff9944410;p=php MFB: MFB: Fixed bug #43677 (Inconsistent behaviour of include_path set with php_value). --- diff --git a/Zend/zend_ini.c b/Zend/zend_ini.c index 2e00eafc73..290402e223 100644 --- a/Zend/zend_ini.c +++ b/Zend/zend_ini.c @@ -60,9 +60,11 @@ static int zend_restore_ini_entry_cb(zend_ini_entry *ini_entry, int stage TSRMLS } ini_entry->value = ini_entry->orig_value; ini_entry->value_length = ini_entry->orig_value_length; + ini_entry->modifiable = ini_entry->orig_modifiable; ini_entry->modified = 0; ini_entry->orig_value = NULL; ini_entry->orig_value_length = 0; + ini_entry->orig_modifiable = 0; } return 0; } @@ -247,12 +249,16 @@ ZEND_API int zend_alter_ini_entry_ex(char *name, uint name_length, char *new_val { zend_ini_entry *ini_entry; char *duplicate; + zend_bool modifiable; zend_bool modified; if (zend_hash_find(EG(ini_directives), name, name_length, (void **) &ini_entry) == FAILURE) { return FAILURE; } + modifiable = ini_entry->modifiable; + modified = ini_entry->modified; + if (stage == ZEND_INI_STAGE_ACTIVATE && modify_type == ZEND_INI_SYSTEM) { ini_entry->modifiable = ZEND_INI_SYSTEM; } @@ -263,8 +269,6 @@ ZEND_API int zend_alter_ini_entry_ex(char *name, uint name_length, char *new_val } } - modified = ini_entry->modified; - if (!EG(modified_ini_directives)) { ALLOC_HASHTABLE(EG(modified_ini_directives)); zend_hash_init(EG(modified_ini_directives), 8, NULL, NULL, 0); @@ -272,6 +276,7 @@ ZEND_API int zend_alter_ini_entry_ex(char *name, uint name_length, char *new_val if (!modified) { ini_entry->orig_value = ini_entry->value; ini_entry->orig_value_length = ini_entry->value_length; + ini_entry->orig_modifiable = modifiable; ini_entry->modified = 1; zend_hash_add(EG(modified_ini_directives), name, name_length, &ini_entry, sizeof(zend_ini_entry*), NULL); } diff --git a/Zend/zend_ini.h b/Zend/zend_ini.h index 2711ec2fa0..7274d029ea 100644 --- a/Zend/zend_ini.h +++ b/Zend/zend_ini.h @@ -77,6 +77,7 @@ struct _zend_ini_entry { char *orig_value; uint orig_value_length; + int orig_modifiable; int modified; void (*displayer)(zend_ini_entry *ini_entry, int type); @@ -112,10 +113,10 @@ ZEND_API ZEND_INI_DISP(display_link_numbers); END_EXTERN_C() #define ZEND_INI_BEGIN() static const zend_ini_entry ini_entries[] = { -#define ZEND_INI_END() { 0, 0, NULL, 0, NULL, NULL, NULL, NULL, NULL, 0, NULL, 0, 0, NULL } }; +#define ZEND_INI_END() { 0, 0, NULL, 0, NULL, NULL, NULL, NULL, NULL, 0, NULL, 0, 0, 0, NULL } }; #define ZEND_INI_ENTRY3_EX(name, default_value, modifiable, on_modify, arg1, arg2, arg3, displayer) \ - { 0, modifiable, name, sizeof(name), on_modify, arg1, arg2, arg3, default_value, sizeof(default_value)-1, NULL, 0, 0, displayer }, + { 0, modifiable, name, sizeof(name), on_modify, arg1, arg2, arg3, default_value, sizeof(default_value)-1, NULL, 0, 0, 0, displayer }, #define ZEND_INI_ENTRY3(name, default_value, modifiable, on_modify, arg1, arg2, arg3) \ ZEND_INI_ENTRY3_EX(name, default_value, modifiable, on_modify, arg1, arg2, arg3, NULL)