svn commit: r286491 - head/lib/libc/locale

Baptiste Daroussin bapt at freebsd.org
Tue Aug 11 16:34:07 UTC 2015


On Tue, Aug 11, 2015 at 06:28:06PM +0200, Ed Schouten wrote:
> 2015-08-09 2:06 GMT+02:00 Baptiste Daroussin <bapt at freebsd.org>:
> >   Per rfc3629 value greater than 0x10ffff should be rejected
> 
> Not only that, values between 0xd800 and 0xdfff also need to be rejected:
> 
> diff --git a/lib/libc/locale/utf8.c b/lib/libc/locale/utf8.c
> index 55e2931..8ccfdb1 100644
> --- a/lib/libc/locale/utf8.c
> +++ b/lib/libc/locale/utf8.c
> @@ -318,6 +318,10 @@ _UTF8_wcrtomb(char * __restrict s, wchar_t wc,
> mbstate_t * __restrict ps)
>   lead = 0xc0;
>   len = 2;
>   } else if ((wc & ~0xffff) == 0) {
> + if (wc >= 0xd800 && wc <= 0xdfff) {
> + errno = EILSEQ;
> + return ((size_t)-1);
> + }
>   lead = 0xe0;
>   len = 3;
>   } else if (wc >= 0 && wc <= 0x10ffff) {

Good catch please go ahead

Bapt
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <http://lists.freebsd.org/pipermail/svn-src-all/attachments/20150811/34a223e2/attachment.bin>


More information about the svn-src-all mailing list