From f48fc67c86cebb4526cfa14c84530dd31ab2ff3f Mon Sep 17 00:00:00 2001 From: Bob Weinand Date: Sun, 5 Oct 2014 00:16:19 +0200 Subject: [PATCH] Fix (system) ini entry transfer --- phpdbg_wait.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/phpdbg_wait.c b/phpdbg_wait.c index 286be365259..4b06700dc0d 100644 --- a/phpdbg_wait.c +++ b/phpdbg_wait.c @@ -312,9 +312,12 @@ void phpdbg_webdata_decompress(char *msg, int len TSRMLS_DC) { if (Z_TYPE_PP(ini_entry) == IS_STRING) { if (zend_hash_find(EG(ini_directives), Z_STRVAL(key), Z_STRLEN(key) + 1, (void **) &original_ini) == SUCCESS) { if (!original_ini->on_modify || original_ini->on_modify(original_ini, Z_STRVAL_PP(ini_entry), Z_STRLEN_PP(ini_entry), original_ini->mh_arg1, original_ini->mh_arg2, original_ini->mh_arg3, ZEND_INI_STAGE_ACTIVATE TSRMLS_CC) == SUCCESS) { + if (original_ini->modified && original_ini->orig_value != original_ini->value) { + efree(original_ini->value); + } original_ini->value = Z_STRVAL_PP(ini_entry); original_ini->value_length = Z_STRLEN_PP(ini_entry); - continue; /* don't free the string */ + Z_TYPE_PP(ini_entry) = IS_NULL; /* don't free the value */ } } }