]> granicus.if.org Git - php/commitdiff
- MFH: Fixed bug #46578 (strip_tags() does not honor end-of-comment when it encounter...
authorFelipe Pena <felipe@php.net>
Fri, 21 Nov 2008 19:16:50 +0000 (19:16 +0000)
committerFelipe Pena <felipe@php.net>
Fri, 21 Nov 2008 19:16:50 +0000 (19:16 +0000)
ext/standard/string.c
ext/standard/tests/strings/bug46578.phpt [new file with mode: 0644]

index c2d7ddf21c1c57427991b56b1f9b7886fbf03f2b..d3a6fdffd88584322471971504dcba2e9ca030f4 100644 (file)
@@ -4353,7 +4353,10 @@ PHPAPI size_t php_strip_tags_ex(char *rbuf, int len, int *stateptr, char *allow,
 
                        case '"':
                        case '\'':
-                               if (state == 2 && *(p-1) != '\\') {
+                               if (state == 4) {
+                                       /* Inside <!-- comment --> */
+                                       break;
+                               } else if (state == 2 && *(p-1) != '\\') {
                                        if (lc == c) {
                                                lc = '\0';
                                        } else if (lc != '\\') {
diff --git a/ext/standard/tests/strings/bug46578.phpt b/ext/standard/tests/strings/bug46578.phpt
new file mode 100644 (file)
index 0000000..ba9fbbe
--- /dev/null
@@ -0,0 +1,25 @@
+--TEST--
+Bug #46578 (strip_tags() does not honor end-of-comment when it encounters a single quote)
+--FILE--
+<?php
+
+var_dump(strip_tags('<!-- testing I\'ve been to mars -->foobar'));
+
+var_dump(strip_tags('<a alt="foobar">foo<!-- foo! --></a>bar'));
+
+var_dump(strip_tags('<a alt="foobar"/>foo<?= foo! /* <!-- "cool" --> */ ?>bar'));
+
+var_dump(strip_tags('< ax'));
+
+var_dump(strip_tags('<! a>'));
+
+var_dump(strip_tags('<? ax'));
+
+?>
+--EXPECTF--
+%string|unicode%(6) "foobar"
+%string|unicode%(6) "foobar"
+%string|unicode%(6) "foobar"
+%string|unicode%(4) "< ax"
+%string|unicode%(0) ""
+%string|unicode%(0) ""