From d41d6cf20670f1ff555db1ee5523c45b0f0c83fc Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Wed, 7 May 2014 22:08:25 +0400 Subject: [PATCH] Interned strings must not be modified in-place MAKE_COPY_ZVAL() should be changed into ZVAL_DUP() --- ext/filter/filter.c | 2 +- ext/filter/sanitizing_filters.c | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/ext/filter/filter.c b/ext/filter/filter.c index f77dcb3473..20ecbaa8c1 100644 --- a/ext/filter/filter.c +++ b/ext/filter/filter.c @@ -776,7 +776,7 @@ PHP_FUNCTION(filter_var) RETURN_FALSE; } - ZVAL_COPY(return_value, data); + ZVAL_DUP(return_value, data); php_filter_call(return_value, filter, filter_args, 1, FILTER_REQUIRE_SCALAR TSRMLS_CC); } diff --git a/ext/filter/sanitizing_filters.c b/ext/filter/sanitizing_filters.c index 638288a1eb..c93633418f 100644 --- a/ext/filter/sanitizing_filters.c +++ b/ext/filter/sanitizing_filters.c @@ -184,6 +184,10 @@ void php_filter_string(PHP_INPUT_FILTER_PARAM_DECL) size_t new_len; unsigned char enc[256] = {0}; + if (IS_INTERNED(Z_STR_P(value))) { + ZVAL_STRINGL(value, Z_STRVAL_P(value), Z_STRLEN_P(value)); + } + /* strip high/strip low ( see flags )*/ php_filter_strip(value, flags); -- 2.50.1