|
|
|
@ -63,6 +63,9 @@ static int zend_restore_ini_entry_cb(zend_ini_entry *ini_entry, int stage TSRMLS |
|
|
|
ini_entry->modified = 0; |
|
|
|
ini_entry->orig_value = NULL; |
|
|
|
ini_entry->orig_value_length = 0; |
|
|
|
if (ini_entry->modifiable >= (1 << 3)) { |
|
|
|
ini_entry->modifiable >>= 3; |
|
|
|
} |
|
|
|
} |
|
|
|
return 0; |
|
|
|
} |
|
|
|
@ -244,6 +247,7 @@ 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; |
|
|
|
TSRMLS_FETCH(); |
|
|
|
|
|
|
|
@ -251,8 +255,12 @@ ZEND_API int zend_alter_ini_entry_ex(char *name, uint name_length, char *new_val |
|
|
|
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; |
|
|
|
/* only touch lower bits */ |
|
|
|
ini_entry->modifiable = (ini_entry->modifiable & (ZEND_INI_ALL << 3)) | ZEND_INI_SYSTEM; |
|
|
|
} |
|
|
|
|
|
|
|
if (!force_change) { |
|
|
|
@ -261,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); |
|
|
|
@ -270,6 +276,8 @@ 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; |
|
|
|
/* store orginial value in the upper bits */ |
|
|
|
ini_entry->modifiable = (modifiable << 3) | ini_entry->modifiable; |
|
|
|
ini_entry->modified = 1; |
|
|
|
zend_hash_add(EG(modified_ini_directives), name, name_length, &ini_entry, sizeof(zend_ini_entry*), NULL); |
|
|
|
} |
|
|
|
|