From b074d630123a28cbca3babc756cbec6dede996f7 Mon Sep 17 00:00:00 2001 From: Ben Fuhrmannek Date: Fri, 1 Aug 2014 18:12:11 +0200 Subject: fixed potential segfault/hashtable inconsistency for disable_display_errors=fail --- suhosin.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'suhosin.c') diff --git a/suhosin.c b/suhosin.c index f5dde65..7bd8902 100644 --- a/suhosin.c +++ b/suhosin.c @@ -982,11 +982,12 @@ PHP_MINIT_FUNCTION(suhosin) zend_ini_entry *i; if (zend_hash_find(EG(ini_directives), "display_errors", sizeof("display_errors"), (void **) &i) == SUCCESS) { if (i->on_modify) { + i->on_modify(i, "0", strlen("0"), i->mh_arg1, i->mh_arg2, i->mh_arg3, ZEND_INI_STAGE_STARTUP TSRMLS_CC); if (SUHOSIN_G(disable_display_errors) > 1) { - zend_alter_ini_entry_ex("display_errors", sizeof("display_errors"), "0", sizeof("0"), ZEND_INI_SYSTEM, ZEND_INI_STAGE_STARTUP, 0 TSRMLS_CC); + i->value = estrdup("0"); + i->value_length = strlen(i->value); i->on_modify = OnUpdate_fail; } else { - i->on_modify(i, "Off", sizeof("off"), i->mh_arg1, i->mh_arg2, i->mh_arg3, ZEND_INI_STAGE_STARTUP TSRMLS_CC); i->on_modify = NULL; } } -- cgit v1.3