moriyoshi Thu Oct 2 15:06:45 2003 EDT
Modified files:
/php-src/ext/standard html.c
Log:
Drop multibyte character support in html_entity_decode().
# This has never worked as expected.
Index: php-src/ext/standard/html.c
diff -u php-src/ext/standard/html.c:1.87 php-src/ext/standard/html.c:1.88
--- php-src/ext/standard/html.c:1.87 Thu Oct 2 02:57:21 2003
+++ php-src/ext/standard/html.c Thu Oct 2 15:06:44 2003
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: html.c,v 1.87 2003/10/02 06:57:21 moriyoshi Exp $ */
+/* $Id: html.c,v 1.88 2003/10/02 19:06:44 moriyoshi Exp $ */
/*
* HTML entity resources:
@@ -924,7 +924,10 @@
if (p[0] == '&') {
if (p + 2 < lim) {
if (p[1] == '#') {
+ int invalid_code = 0;
+
code = strtol(p + 2, &next, 10);
+
if (next != NULL && *next == ';') {
switch (charset) {
case cs_utf_8:
@@ -934,7 +937,9 @@
case cs_8859_1:
case cs_8859_5:
case cs_8859_15:
- if (0xa0 <= code &&
code <= 0xff) {
+ if ((code >= 0x80 &&
code < 0xa0) || code > 0xff) {
+ invalid_code =
1;
+ } else {
*(q++) = code;
}
break;
@@ -942,23 +947,41 @@
case cs_cp1252:
case cs_cp1251:
case cs_cp866:
- if (0x80 <= code &&
code <= 0xff) {
+ if (code > 0xff) {
+ invalid_code =
1;
+ } else {
*(q++) = code;
}
break;
case cs_big5:
- case cs_gb2312:
case cs_big5hkscs:
case cs_sjis:
case cs_eucjp:
- if (code <= 0x7f) {
+ if (code >= 0x80) {
+ invalid_code =
1;
+ } else {
+ *(q++) = code;
+ }
+ break;
+
+ case cs_gb2312:
+ if (code >= 0x81) {
+ invalid_code =
1;
+ } else {
*(q++) = code;
}
break;
default:
+ /* for backwards
compatilibity */
+ invalid_code = 1;
break;
+ }
+ if (invalid_code) {
+ for (; p <= next; p++) {
+ *(q++) = *p;
+ }
}
p = next + 1;
} else {-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
