Browse Source

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

Mike Jerris 8 năm trước cách đây
mục cha
commit
72e6e23523
1 tập tin đã thay đổi với 3 bổ sung2 xóa
  1. 3 2
      cJSON.c

+ 3 - 2
cJSON.c

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