prevent read beyond end of buffer when string ends with malformed utf

This commit is contained in:
Mike Jerris 2017-02-23 08:59:25 -06:00
parent 4fce9cce86
commit 72e6e23523

View File

@ -422,8 +422,6 @@ static unsigned char utf16_literal_to_utf8(const unsigned char * const input_poi
unsigned char utf8_length = 0; unsigned char utf8_length = 0;
unsigned char sequence_length = 0; unsigned char sequence_length = 0;
/* get the first utf16 sequence */
first_code = parse_hex4(first_sequence + 2);
if ((input_end - first_sequence) < 6) if ((input_end - first_sequence) < 6)
{ {
/* input ends unexpectedly */ /* input ends unexpectedly */
@ -431,6 +429,9 @@ static unsigned char utf16_literal_to_utf8(const unsigned char * const input_poi
goto fail; goto fail;
} }
/* get the first utf16 sequence */
first_code = parse_hex4(first_sequence + 2);
/* check that the code is valid */ /* check that the code is valid */
if (((first_code >= 0xDC00) && (first_code <= 0xDFFF)) || (first_code == 0)) if (((first_code >= 0xDC00) && (first_code <= 0xDFFF)) || (first_code == 0))
{ {