]> granicus.if.org Git - php/commitdiff
MFH: Fix bug when < is used within attribute.
authorScott MacVicar <scottmac@php.net>
Tue, 15 Jul 2008 14:58:58 +0000 (14:58 +0000)
committerScott MacVicar <scottmac@php.net>
Tue, 15 Jul 2008 14:58:58 +0000 (14:58 +0000)
NEWS
ext/standard/string.c
ext/standard/tests/strings/strip_tags_variation11.phpt [new file with mode: 0644]

diff --git a/NEWS b/NEWS
index 1c5be1ea4d30cb06a2388d6f39c580291ccc963a..450dcfdf7d38ea6714f8deb7da9b884bcdfd7a20 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -9,6 +9,7 @@ PHP                                                                        NEWS
 - Fixed a crash inside PDO when trying instantiate PDORow manually. (Felipe)
 - Fixed build failure of ext/mysqli with libmysql 6.0 - missing rpl
   functions. (Andrey)
+- Fixed a regression when using strip_tags() and < is within an attribute. (Scott)
 
 - Fixed bug #45486 (mb_send_mail(); header 'Content-Type: text/plain; charset=' 
   parsing incorrect). (Felipe)
index 54f680a00d7ee3e5df6367f9f767284614bdf8d0..e038bc7ba796bc13ce54a8b4e01f442ad838922a 100644 (file)
@@ -4355,6 +4355,9 @@ PHPAPI size_t php_strip_tags_ex(char *rbuf, int len, int *stateptr, char *allow,
                        case '\0':
                                break;
                        case '<':
+                               if (in_q) {
+                                       break;
+                               }
                                if (isspace(*(p + 1)) && !allow_tag_spaces) {
                                        goto reg_char;
                                }
diff --git a/ext/standard/tests/strings/strip_tags_variation11.phpt b/ext/standard/tests/strings/strip_tags_variation11.phpt
new file mode 100644 (file)
index 0000000..3b47b5c
--- /dev/null
@@ -0,0 +1,41 @@
+--TEST--
+Test strip_tags() function : obscure values within attributes
+--INI--
+short_open_tag = on
+--FILE--
+<?php
+
+echo "*** Testing strip_tags() : obscure functionality ***\n";
+
+// array of arguments 
+$string_array = array (
+  'hello <img title="<"> world',
+  'hello <img title=">"> world',
+  'hello <img title=">_<"> world',
+  "hello <img title='>_<'> world"
+);
+  
+               
+// Calling strip_tags() with default arguments
+// loop through the $string_array to test strip_tags on various inputs
+$iteration = 1;
+foreach($string_array as $string)
+{
+  echo "-- Iteration $iteration --\n";
+  var_dump( strip_tags($string) );
+  $iteration++;
+}
+
+echo "Done";
+?>
+--EXPECTF--
+*** Testing strip_tags() : obscure functionality ***
+-- Iteration 1 --
+string(12) "hello  world"
+-- Iteration 2 --
+string(12) "hello  world"
+-- Iteration 3 --
+string(12) "hello  world"
+-- Iteration 4 --
+string(12) "hello  world"
+Done