]> granicus.if.org Git - php/commitdiff
Fix #69202: FILTER_FLAG_STRIP_BACKTICK ignored unless other flags are used.
authorJeff Welch <whatthejeff@gmail.com>
Mon, 9 Mar 2015 07:54:19 +0000 (03:54 -0400)
committerXinchen Hui <laruence@php.net>
Mon, 9 Mar 2015 09:14:47 +0000 (17:14 +0800)
ext/filter/sanitizing_filters.c
ext/filter/tests/bug69202.phpt [new file with mode: 0644]

index f786f29ce767f56a49fe8313d661925741a2d479..43241cc1eff407d3a0a94149fb96c5f61b4a1416 100644 (file)
@@ -115,7 +115,7 @@ static void php_filter_strip(zval *value, zend_long flags)
        zend_string *buf;
 
        /* Optimization for if no strip flags are set */
-       if (! ((flags & FILTER_FLAG_STRIP_LOW) || (flags & FILTER_FLAG_STRIP_HIGH)) ) {
+       if (!(flags & (FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH | FILTER_FLAG_STRIP_BACKTICK))) {
                return;
        }
 
diff --git a/ext/filter/tests/bug69202.phpt b/ext/filter/tests/bug69202.phpt
new file mode 100644 (file)
index 0000000..9922986
--- /dev/null
@@ -0,0 +1,16 @@
+--TEST--
+Bug #69202 (FILTER_FLAG_STRIP_BACKTICK ignored unless other flags are used)
+--SKIPIF--
+<?php if (!extension_loaded("filter")) die("skip"); ?>
+--FILE--
+<?php
+var_dump(filter_var("``a`b`c``", FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_BACKTICK));
+var_dump(filter_var("``a`b`c``", FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_BACKTICK));
+var_dump(filter_var("``a`b`c``", FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH | FILTER_FLAG_STRIP_BACKTICK));
+var_dump(filter_var("``a`b`c``", FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH));
+?>
+--EXPECT--
+string(3) "abc"
+string(3) "abc"
+string(3) "abc"
+string(9) "``a`b`c``"