Skip to content

Commit 0d1d814

Browse files
author
Julien Pauli
committed
Merge branch 'PHP-5.6' into PHP-7.0
* PHP-5.6: Updated NEWS Fix #70720 Conflicts: ext/standard/string.c ext/standard/tests/strings/bug70720.phpt
2 parents f7c3f54 + ed80ca0 commit 0d1d814

File tree

2 files changed

+23
-3
lines changed

2 files changed

+23
-3
lines changed

ext/standard/string.c

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4715,6 +4715,7 @@ PHPAPI size_t php_strip_tags_ex(char *rbuf, size_t len, int *stateptr, const cha
47154715
size_t pos, i = 0;
47164716
char *allow_free = NULL;
47174717
const char *allow_actual;
4718+
char is_xml = 0;
47184719

47194720
if (stateptr)
47204721
state = *stateptr;
@@ -4810,7 +4811,10 @@ PHPAPI size_t php_strip_tags_ex(char *rbuf, size_t len, int *stateptr, const cha
48104811
switch (state) {
48114812
case 1: /* HTML/XML */
48124813
lc = '>';
4813-
in_q = state = 0;
4814+
if (is_xml && *(p -1) == '-') {
4815+
break;
4816+
}
4817+
in_q = state = is_xml = 0;
48144818
if (allow) {
48154819
if (tp - tbuf >= PHP_TAG_BUF_SIZE) {
48164820
pos = tp - tbuf;
@@ -4939,8 +4943,8 @@ PHPAPI size_t php_strip_tags_ex(char *rbuf, size_t len, int *stateptr, const cha
49394943
* state == 2 (PHP). Switch back to HTML.
49404944
*/
49414945

4942-
if (state == 2 && p > buf+2 && strncasecmp(p-2, "xm", 2) == 0) {
4943-
state = 1;
4946+
if (state == 2 && p > buf+2 && strncasecmp(p-4, "<?xm", 4) == 0) {
4947+
state = 1; is_xml=1;
49444948
break;
49454949
}
49464950

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
--TEST--
2+
Bug #70720 (strip_tags() doesnt handle "xml" correctly)
3+
--FILE--
4+
<?php
5+
var_dump(strip_tags('<?php $dom->test(); ?> this is a test'));
6+
var_dump(strip_tags('<?php $xml->test(); ?> this is a test'));
7+
var_dump(strip_tags('<?xml $xml->test(); ?> this is a test'));
8+
9+
/* "->" case in HTML */
10+
var_dump(strip_tags("<span class=sf-dump-> this is a test</span>"));
11+
?>
12+
--EXPECTF--
13+
string(15) " this is a test"
14+
string(15) " this is a test"
15+
string(15) " this is a test"
16+
string(15) " this is a test"

0 commit comments

Comments
 (0)