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

index 05db48b30ed217cecef4d8e5c8805d79cb4f17eb..4051f250da2c40b6f4749bdaa6a338cc3321c683 100644 (file)
@@ -6623,12 +6623,13 @@ PHPAPI int php_u_strip_tags(UChar *rbuf, int len, int *stateptr, UChar *allow, i
                        /* 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 && codepts > 2 && prev1 == 'm' && prev2 == 'x') {
+                       if (state == 2 && codepts > 2 && (prev1 == 'm' || prev1 == 'M') && (prev2 == 'x' || prev2 == 'X')) {
                                state = 1;
                                break;
                        }
@@ -6859,12 +6860,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