summaryrefslogtreecommitdiff
path: root/main/php_ini.c
diff options
context:
space:
mode:
authorZeev Suraski <zeev@php.net>1999-04-10 00:19:33 +0000
committerZeev Suraski <zeev@php.net>1999-04-10 00:19:33 +0000
commit4fd1d5b81bcbf7d549704278a7dd32a8e4f8ddf7 (patch)
treed5c3b3cb373d0aac5f6f81fa8e01fa6cbdbbd7b3 /main/php_ini.c
parentd40e88a0164bbeb8027e9321cd95107c81e09d63 (diff)
downloadphp-git-4fd1d5b81bcbf7d549704278a7dd32a8e4f8ddf7.tar.gz
* php_ini fixes
* convert the MySQL module to use the new php_ini mechanism
Diffstat (limited to 'main/php_ini.c')
-rw-r--r--main/php_ini.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/main/php_ini.c b/main/php_ini.c
index e57db71a69..8b36129a0d 100644
--- a/main/php_ini.c
+++ b/main/php_ini.c
@@ -132,6 +132,7 @@ void php_unregister_ini_entries(int module_number)
int php_alter_ini_entry(char *name, uint name_length, char *new_value, uint new_value_length, int modify_type)
{
php_ini_entry *ini_entry;
+ char *duplicate;
if (_php3_hash_find(&known_directives, name, name_length, (void **) &ini_entry)==FAILURE) {
return FAILURE;
@@ -141,17 +142,21 @@ int php_alter_ini_entry(char *name, uint name_length, char *new_value, uint new_
return FAILURE;
}
+ duplicate = estrndup(new_value, new_value_length);
+
if (!ini_entry->on_modify
- || ini_entry->on_modify(ini_entry, new_value, new_value_length, ini_entry->mh_arg)==SUCCESS) {
+ || ini_entry->on_modify(ini_entry, duplicate, new_value_length, ini_entry->mh_arg)==SUCCESS) {
if (!ini_entry->orig_value) {
ini_entry->orig_value = ini_entry->value;
ini_entry->orig_value_length = ini_entry->value_length;
} else { /* we already changed the value, free the changed value */
efree(ini_entry->value);
}
- ini_entry->value = estrndup(new_value, new_value_length);
+ ini_entry->value = duplicate;
ini_entry->value_length = new_value_length;
ini_entry->modified = 1;
+ } else {
+ efree(duplicate);
}
return SUCCESS;