From 0560a4a27c88dfe1a9a5fd2eb83f0b92bc7fe33b Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Sun, 12 May 2019 16:04:33 +0200 Subject: [PATCH 1/2] Fix #78003: strip_tags output change since PHP 7.3 A refactoring of the strip tags state machine[1] missed the special treatment of `depth > 0` when a `>` is encountered in state 3. We re-add it for BC reasons. [1] --- ext/standard/string.c | 4 ++++ ext/standard/tests/strings/bug78003.phpt | 14 ++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 ext/standard/tests/strings/bug78003.phpt diff --git a/ext/standard/string.c b/ext/standard/string.c index 7404f38982ef7..f6e1b1b32a547 100644 --- a/ext/standard/string.c +++ b/ext/standard/string.c @@ -5284,6 +5284,10 @@ PHPAPI size_t php_strip_tags_ex(char *rbuf, size_t len, uint8_t *stateptr, const c = *p; switch (c) { case '>': + if (depth) { + depth--; + break; + } if (in_q) { break; } diff --git a/ext/standard/tests/strings/bug78003.phpt b/ext/standard/tests/strings/bug78003.phpt new file mode 100644 index 0000000000000..4e8a99752966f --- /dev/null +++ b/ext/standard/tests/strings/bug78003.phpt @@ -0,0 +1,14 @@ +--TEST-- +Bug #78003 (strip_tags output change since PHP 7.3) +--FILE-- +bar>'), + strip_tags('bar>') +); +?> +===DONE=== +--EXPECT-- +string(0) "" +string(0) "" +===DONE=== From 9c2eba54e3fea18241469648c906e6c40dbc3b00 Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Mon, 13 May 2019 11:34:04 +0200 Subject: [PATCH 2/2] Cater to state 2 (PI) as well --- ext/standard/string.c | 4 ++++ ext/standard/tests/strings/bug78003.phpt | 4 +++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/ext/standard/string.c b/ext/standard/string.c index f6e1b1b32a547..fe7f64de2ec71 100644 --- a/ext/standard/string.c +++ b/ext/standard/string.c @@ -5227,6 +5227,10 @@ PHPAPI size_t php_strip_tags_ex(char *rbuf, size_t len, uint8_t *stateptr, const } break; case '>': + if (depth) { + depth--; + break; + } if (in_q) { break; } diff --git a/ext/standard/tests/strings/bug78003.phpt b/ext/standard/tests/strings/bug78003.phpt index 4e8a99752966f..4379ca8a71c16 100644 --- a/ext/standard/tests/strings/bug78003.phpt +++ b/ext/standard/tests/strings/bug78003.phpt @@ -4,11 +4,13 @@ Bug #78003 (strip_tags output change since PHP 7.3) bar>'), - strip_tags('bar>') + strip_tags('bar>'), + strip_tags('bar>') ); ?> ===DONE=== --EXPECT-- string(0) "" string(0) "" +string(0) "" ===DONE===