summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNuno Lopes <nlopess@php.net>2007-05-27 15:57:11 +0000
committerNuno Lopes <nlopess@php.net>2007-05-27 15:57:11 +0000
commit2c5368c013f287ed8bc88ecd52c0350f420c9738 (patch)
treed7401835d20bdd07fafdc15f1d2229a2d839a458
parent452524fe3ae8644bad4c29aa498272054e1f0ba8 (diff)
downloadphp-git-2c5368c013f287ed8bc88ecd52c0350f420c9738.tar.gz
fix handling of &&amp; by htmlentities 'no-double-encode'
expand the test cases
-rw-r--r--ext/standard/html.c2
-rw-r--r--ext/standard/tests/strings/htmlentities18.phpt13
2 files changed, 12 insertions, 3 deletions
diff --git a/ext/standard/html.c b/ext/standard/html.c
index a5f5292c33..5b102f3d82 100644
--- a/ext/standard/html.c
+++ b/ext/standard/html.c
@@ -1154,7 +1154,7 @@ encode_amp:
len += sizeof("&amp;") - 1;
} else {
char *e = memchr(old + i, ';', oldlen - i);
- char *s = old + i + 1;
+ char *s = old + i;
if (!e || (e - s) > 10) { /* minor optimization to avoid "entities" over 10 chars in length */
goto encode_amp;
diff --git a/ext/standard/tests/strings/htmlentities18.phpt b/ext/standard/tests/strings/htmlentities18.phpt
index f171adaca2..ab3df05da8 100644
--- a/ext/standard/tests/strings/htmlentities18.phpt
+++ b/ext/standard/tests/strings/htmlentities18.phpt
@@ -9,6 +9,9 @@ $tests = array(
"&; &amp &#a; &9;",
"&kffjadfdhsjfhjasdhffasdfas;",
"&#8787978789",
+ "&",
+ "&&amp;&",
+ "&ab&amp;&",
);
foreach ($tests as $test) {
@@ -23,9 +26,15 @@ string(13) "abc&amp;sfdsa"
string(13) "abc&amp;sfdsa"
string(33) "test&#043;s &amp; some more &#68;"
string(33) "test&#043;s &amp; some more &#68;"
-string(20) "&; &amp;amp &#a; &9;"
-string(20) "&; &amp;amp &#a; &9;"
+string(24) "&; &amp;amp &amp;#a; &9;"
+string(24) "&; &amp;amp &amp;#a; &9;"
string(32) "&amp;kffjadfdhsjfhjasdhffasdfas;"
string(32) "&amp;kffjadfdhsjfhjasdhffasdfas;"
string(16) "&amp;#8787978789"
string(16) "&amp;#8787978789"
+string(5) "&amp;"
+string(5) "&amp;"
+string(15) "&amp;&amp;&amp;"
+string(15) "&amp;&amp;&amp;"
+string(17) "&amp;ab&amp;&amp;"
+string(17) "&amp;ab&amp;&amp;"