diff options
-rw-r--r-- | ext/standard/filters.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/ext/standard/filters.c b/ext/standard/filters.c index edb0bc15f0..24aee7cfc3 100644 --- a/ext/standard/filters.c +++ b/ext/standard/filters.c @@ -1661,6 +1661,11 @@ static php_stream_filter *strfilter_convert_create(const char *filtername, zval char *dot; int conv_mode; + if (filterparams != NULL && Z_TYPE_P(filterparams) != IS_ARRAY) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "stream filter (%s): invalid filter parameter", filtername); + return NULL; + } + if ((dot = strchr(filtername, '.')) == NULL) { return NULL; } @@ -1668,10 +1673,6 @@ static php_stream_filter *strfilter_convert_create(const char *filtername, zval inst = pemalloc(sizeof(php_convert_filter), persistent); - if (Z_TYPE_P(filterparams) != IS_ARRAY) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "stream filter (%s): invalid filter parameter", filtername); - } - if (strcasecmp(dot, "base64-encode") == 0) { conv_mode = PHP_CONV_BASE64_ENCODE; } else if (strcasecmp(dot, "base64-decode") == 0) { |