]> granicus.if.org Git - php/commitdiff
- Fixed bug #45485 (strip_tags and <?XML tag)
authorFelipe Pena <felipe@php.net>
Fri, 11 Jul 2008 12:16:06 +0000 (12:16 +0000)
committerFelipe Pena <felipe@php.net>
Fri, 11 Jul 2008 12:16:06 +0000 (12:16 +0000)
ext/standard/string.c
ext/standard/tests/strings/bug45485.phpt [new file with mode: 0644]

index f4bb26005d8eb6e738014db898ea194e55b000ae..54f680a00d7ee3e5df6367f9f767284614bdf8d0 100644 (file)
@@ -4519,12 +4519,13 @@ PHPAPI size_t php_strip_tags_ex(char *rbuf, int len, int *stateptr, char *allow,
                                /* fall-through */
 
                        case 'l':
+                       case 'L':
 
                                /* swm: If we encounter '<?xml' then we shouldn't be in
                                 * state == 2 (PHP). Switch back to HTML.
                                 */
 
-                               if (state == 2 && p > buf+2 && *(p-1) == 'm' && *(p-2) == 'x') {
+                               if (state == 2 && p > buf+2 && strncasecmp(p-2, "xm", 2) == 0) {
                                        state = 1;
                                        break;
                                }
diff --git a/ext/standard/tests/strings/bug45485.phpt b/ext/standard/tests/strings/bug45485.phpt
new file mode 100644 (file)
index 0000000..4d24c9a
--- /dev/null
@@ -0,0 +1,23 @@
+--TEST--
+Bug #45485 (strip_tags and <?XML tag)
+--FILE--
+<?php
+
+$s =<<< EOD
+This text is shown <?XML:NAMESPACE PREFIX = ST1 /><b>This Text disappears</b>
+EOD;
+
+$s = strip_tags($s);
+echo htmlspecialchars($s),"\n";
+
+$s =<<< EOD
+This text is shown <?xml:NAMESPACE PREFIX = ST1 /><b>This Text disappears</b>
+EOD;
+
+$s = strip_tags($s);
+echo htmlspecialchars($s),"\n";
+
+?>
+--EXPECT--
+This text is shown This Text disappears
+This text is shown This Text disappears