summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbapt <bapt@FreeBSD.org>2015-08-09 00:06:56 +0000
committerbapt <bapt@FreeBSD.org>2015-08-09 00:06:56 +0000
commit9e0d1c3e199cfcd8480d2e892da387ebb1bbde8b (patch)
tree09b976e438db48b8cec0e5b842b3bd90936d3a8f
parentdf871b442a50fbf3cc4d8c19deb60a0af5121a8e (diff)
downloadFreeBSD-src-9e0d1c3e199cfcd8480d2e892da387ebb1bbde8b.zip
FreeBSD-src-9e0d1c3e199cfcd8480d2e892da387ebb1bbde8b.tar.gz
Remove 5 and 6 bytes sequences which are illegal in UTF-8 space. (part2)
Per rfc3629 value greater than 0x10ffff should be rejected Suggested by: jilles
-rw-r--r--lib/libc/locale/utf8.c8
1 files changed, 1 insertions, 7 deletions
diff --git a/lib/libc/locale/utf8.c b/lib/libc/locale/utf8.c
index 843d59f..55e2931 100644
--- a/lib/libc/locale/utf8.c
+++ b/lib/libc/locale/utf8.c
@@ -320,15 +320,9 @@ _UTF8_wcrtomb(char * __restrict s, wchar_t wc, mbstate_t * __restrict ps)
} else if ((wc & ~0xffff) == 0) {
lead = 0xe0;
len = 3;
- } else if ((wc & ~0x1fffff) == 0) {
+ } else if (wc >= 0 && wc <= 0x10ffff) {
lead = 0xf0;
len = 4;
- } else if ((wc & ~0x3ffffff) == 0) {
- lead = 0xf8;
- len = 5;
- } else if ((wc & ~0x7fffffff) == 0) {
- lead = 0xfc;
- len = 6;
} else {
errno = EILSEQ;
return ((size_t)-1);
OpenPOWER on IntegriCloud