diff options
author | Nicholas Clark <nick@ccl4.org> | 2009-10-18 22:01:49 +0100 |
---|---|---|
committer | Nicholas Clark <nick@ccl4.org> | 2009-10-18 22:10:36 +0100 |
commit | dbde19516d139ef4237fc56ac1a14665a9f13c0b (patch) | |
tree | 24eeaeb461811abc2fa36561ae01d8aabb1524eb /utf8.c | |
parent | 01ea242be7d23d3bfac7a37c0cdfaec0a8eb7e33 (diff) | |
download | perl-dbde19516d139ef4237fc56ac1a14665a9f13c0b.tar.gz |
utf16_to_utf8() should croak on encountering a bare low surrogate.
Diffstat (limited to 'utf8.c')
-rw-r--r-- | utf8.c | 2 |
1 files changed, 2 insertions, 0 deletions
@@ -995,6 +995,8 @@ Perl_utf16_to_utf8(pTHX_ U8* p, U8* d, I32 bytelen, I32 *newlen) Perl_croak(aTHX_ "Malformed UTF-16 surrogate"); uv = ((uv - 0xd800) << 10) + (low - 0xdc00) + 0x10000; } + } else if (uv >= 0xdc00 && uv <= 0xdfff) { + Perl_croak(aTHX_ "Malformed UTF-16 surrogate"); } if (uv < 0x10000) { *d++ = (U8)(( uv >> 12) | 0xe0); |