Don't pass negative token id to Lemon parser
authorNick Wellnhofer <wellnhofer@aevum.de>
Thu, 8 Feb 2018 13:29:11 +0000 (14:29 +0100)
committerNick Wellnhofer <wellnhofer@aevum.de>
Thu, 8 Feb 2018 15:07:13 +0000 (16:07 +0100)
Newer Lemon versions throw an assertion if they encounter invalid
token ids.

Fixes LUCY-327. Thanks to Petr Pisar for the report.

core/Lucy/Util/Json.c

index 46a0b89..be19660 100644 (file)
@@ -479,6 +479,12 @@ S_do_parse_json(void *json_parser, const char *json, size_t len) {
                 }
                 break;
         }
+        if (token_type < 0) {
+            // Clear out parser and return.
+            LucyParseJson(json_parser, 0, NULL, &state);
+            SET_ERROR("JSON syntax error", save, end);
+            return NULL;
+        }
         LucyParseJson(json_parser, token_type, value, &state);
         if (state.errors) {
             SET_ERROR("JSON syntax error", save, end);