- Fixed bug #46578 (strip_tags() does not honor end-of-comment when it encounters a single quote)

This commit is contained in:
Felipe Pena 2008-11-21 19:14:47 +00:00
parent 7397249d2e
commit 3b06b39d54
2 changed files with 33 additions and 2 deletions

View file

@ -6538,7 +6538,10 @@ PHPAPI int php_u_strip_tags(UChar *rbuf, int len, int *stateptr, UChar *allow, i
case 0x22: /* '"' */
case 0x27: /* '\'' */
if (state == 2 && prev1 != 0x5C) { /* '\\' */
if (state == 4){
/* Inside <!-- comment --> */
break;
} else if (state == 2 && prev1 != 0x5C) { /* '\\' */
if (last == ch) {
last = 0x00;
} else if (last != 0x5C) {
@ -6779,7 +6782,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 != '\\') {

View file

@ -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) ""