diff options
-rw-r--r-- | ext/filter/filter.c | 2 | ||||
-rw-r--r-- | ext/filter/sanitizing_filters.c | 4 |
2 files changed, 5 insertions, 1 deletions
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); |