]> granicus.if.org Git - php/commitdiff
Fix #69203: FILTER_FLAG_STRIP_HIGH doesn't strip ASCII 127
authorJeff Welch <whatthejeff@gmail.com>
Mon, 9 Mar 2015 11:14:22 +0000 (07:14 -0400)
committerNikita Popov <nikic@php.net>
Sat, 14 Mar 2015 08:17:36 +0000 (09:17 +0100)
NEWS
ext/filter/sanitizing_filters.c
ext/filter/tests/bug69203.phpt [new file with mode: 0644]

diff --git a/NEWS b/NEWS
index 5e1a68a44cf8ed00ea607c4a99c075ca20df98f7..46a1102c251695d8452303f11e6500dc7a87b0da 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -14,8 +14,10 @@ PHP                                                                        NEWS
     with an Iterator). (Nikita)
 
 - Filter:
-  . Fixed bug #69202: (FILTER_FLAG_STRIP_BACKTICK ignored unless other
+  . Fixed bug #69202 (FILTER_FLAG_STRIP_BACKTICK ignored unless other
     flags are used). (Jeff Welch)
+  . Fixed bug #69203 (FILTER_FLAG_STRIP_HIGH doesn't strip ASCII 127). (Jeff
+    Welch)
 
 - Mbstring:
    . Fixed bug #68846 (False detection of CJK Unified Ideographs Extension E).
index 975e425cf4470aedac91ca036ec000787ff7ed69..56ac207c44285cae49a788b9718835591ec52581 100644 (file)
@@ -121,7 +121,7 @@ static void php_filter_strip(zval *value, long flags)
        buf = safe_emalloc(1, Z_STRLEN_P(value) + 1, 1);
        c = 0;
        for (i = 0; i < Z_STRLEN_P(value); i++) {
-               if ((str[i] > 127) && (flags & FILTER_FLAG_STRIP_HIGH)) {
+               if ((str[i] >= 127) && (flags & FILTER_FLAG_STRIP_HIGH)) {
                } else if ((str[i] < 32) && (flags & FILTER_FLAG_STRIP_LOW)) {
                } else if ((str[i] == '`') && (flags & FILTER_FLAG_STRIP_BACKTICK)) {
                } else {
diff --git a/ext/filter/tests/bug69203.phpt b/ext/filter/tests/bug69203.phpt
new file mode 100644 (file)
index 0000000..4bafe33
--- /dev/null
@@ -0,0 +1,16 @@
+--TEST--
+Bug #69203 (FILTER_FLAG_STRIP_HIGH doesn't strip ASCII 127)
+--SKIPIF--
+<?php if (!extension_loaded("filter")) die("skip"); ?>
+--FILE--
+<?php
+var_dump(filter_var("\x7f", FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH));
+var_dump(filter_var("\x7f", FILTER_UNSAFE_RAW, FILTER_FLAG_STRIP_HIGH));
+var_dump(filter_var("\x7f", FILTER_SANITIZE_ENCODED, FILTER_FLAG_STRIP_HIGH));
+var_dump(filter_var("\x7f", FILTER_SANITIZE_SPECIAL_CHARS, FILTER_FLAG_STRIP_HIGH));
+?>
+--EXPECT--
+string(0) ""
+string(0) ""
+string(0) ""
+string(0) ""