json: Add checks when skipping byte
authorAndre Heinecke <aheinecke@intevation.de>
Wed, 8 Aug 2018 11:30:01 +0000 (13:30 +0200)
committerAndre Heinecke <aheinecke@intevation.de>
Wed, 8 Aug 2018 11:30:01 +0000 (13:30 +0200)
* src/cJSON.c (parse_string, cJSON_Minify): Check for
terminating NULL byte when skipping the byte after a an escaped
quote.

src/cJSON.c

index 65d105b..eea1adf 100644 (file)
@@ -249,7 +249,7 @@ parse_string (cJSON * item, const char *str, const char **ep)
     }                          /* not a string! */
 
   while (*ptr != '\"' && *ptr && ++len)
-    if (*ptr++ == '\\')
+    if (*ptr++ == '\\' && *ptr)
       ptr++;                   /* Skip escaped quotes. */
 
   out = xtrymalloc (len + 2);  /* This is how long we need for the
@@ -268,6 +268,8 @@ parse_string (cJSON * item, const char *str, const char **ep)
       else
        {
          ptr++;
+          if (!*ptr)
+            break;
          switch (*ptr)
            {
            case 'b':
@@ -1416,9 +1418,11 @@ cJSON_Minify (char *json)
            {
              if (*json == '\\')
                *into++ = *json++;
-             *into++ = *json++;
+             if (*json)
+               *into++ = *json++;
            }
-         *into++ = *json++;
+          if (*json)
+            *into++ = *json++;
        }                       /* String literals, which are \" sensitive.  */
       else
        *into++ = *json++;      /* All other characters.  */