Переглянути джерело

Fix infinite loop in cJSON_Minify

Max Bruckner 6 роки тому
батько
коміт
08d2bc766a
2 змінених файлів з 9 додано та 0 видалено
  1. 2 0
      cJSON.c
  2. 7 0
      tests/minify_tests.c

+ 2 - 0
cJSON.c

@@ -2717,6 +2717,8 @@ CJSON_PUBLIC(void) cJSON_Minify(char *json)
                 else if (json[1] == '*')
                 {
                     skip_multiline_comment(&json);
+                } else {
+                    json++;
                 }
                 break;
 

+ 7 - 0
tests/minify_tests.c

@@ -152,6 +152,12 @@ static void cjson_minify_should_minify_json(void) {
     free(buffer);
 }
 
+static void cjson_minify_should_not_loop_infinitely(void) {
+    char string[] = { '8', ' ', '/', ' ', '5', '\n', '\0' };
+    /* this should not be an infinite loop */
+    cJSON_Minify(string);
+}
+
 int CJSON_CDECL main(void)
 {
     UNITY_BEGIN();
@@ -162,6 +168,7 @@ int CJSON_CDECL main(void)
     RUN_TEST(cjson_minify_should_remove_multiline_comments);
     RUN_TEST(cjson_minify_should_remove_spaces);
     RUN_TEST(cjson_minify_should_not_modify_strings);
+    RUN_TEST(cjson_minify_should_not_loop_infinitely);
 
     return UNITY_END();
 }