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

index e478979618e7a34970742d2328ba5419ec625c9f..9930110624c1c92ba963c8cc8cacc4469604b281 100644 (file)
@@ -4249,6 +4249,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