瀏覽代碼

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

Mike Jerris 8 年之前
父節點
當前提交
72e6e23523
共有 1 個文件被更改,包括 3 次插入2 次删除
  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))
     {