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