From bbe42d767311e39c83656f378bd3009ce8aca80d Mon Sep 17 00:00:00 2001 From: Markus Fischer Date: Sun, 10 Mar 2002 09:22:31 +0000 Subject: [PATCH] - Fix crash in iconv_set_encoding(). [Closes #15799] --- ext/iconv/iconv.c | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/ext/iconv/iconv.c b/ext/iconv/iconv.c index aeb7f0901a..ba0a6ab6e8 100644 --- a/ext/iconv/iconv.c +++ b/ext/iconv/iconv.c @@ -331,7 +331,7 @@ PHP_FUNCTION(ob_iconv_handler) PHP_FUNCTION(iconv_set_encoding) { zval **type, **charset; - int argc = ZEND_NUM_ARGS(); + int argc = ZEND_NUM_ARGS(), retval; if (argc != 2 || zend_get_parameters_ex(2, &type, &charset) == FAILURE) { WRONG_PARAM_COUNT; @@ -341,25 +341,20 @@ PHP_FUNCTION(iconv_set_encoding) convert_to_string_ex(charset); if(!strcasecmp("input_encoding", Z_STRVAL_PP(type))) { - if (ICONVG(input_encoding)) { - free(ICONVG(input_encoding)); - } - ICONVG(input_encoding) = estrndup(Z_STRVAL_PP(charset), Z_STRLEN_PP(charset)); + retval = zend_alter_ini_entry("iconv.input_encoding", sizeof("iconv.input_encoding"), Z_STRVAL_PP(charset), Z_STRLEN_PP(charset), PHP_INI_USER, PHP_INI_STAGE_RUNTIME); } else if(!strcasecmp("output_encoding", Z_STRVAL_PP(type))) { - if (ICONVG(output_encoding)) { - free(ICONVG(output_encoding)); - } - ICONVG(output_encoding) = estrndup(Z_STRVAL_PP(charset), Z_STRLEN_PP(charset)); + retval = zend_alter_ini_entry("iconv.output_encoding", sizeof("iconv.output_encoding"), Z_STRVAL_PP(charset), Z_STRLEN_PP(charset), PHP_INI_USER, PHP_INI_STAGE_RUNTIME); } else if(!strcasecmp("internal_encoding", Z_STRVAL_PP(type))) { - if (ICONVG(internal_encoding)) { - free(ICONVG(internal_encoding)); - } - ICONVG(internal_encoding) = estrndup(Z_STRVAL_PP(charset), Z_STRLEN_PP(charset)); + retval = zend_alter_ini_entry("iconv.internal_encoding", sizeof("iconv.internal_encoding"), Z_STRVAL_PP(charset), Z_STRLEN_PP(charset), PHP_INI_USER, PHP_INI_STAGE_RUNTIME); } else { RETURN_FALSE; } - RETURN_TRUE; + if (retval == SUCCESS) { + RETURN_TRUE; + } else { + RETURN_FALSE; + } } /* }}} */ -- 2.40.0