From 5319dedb1a6480c2e9b7f6bcdb32549ab723493b Mon Sep 17 00:00:00 2001 From: Vladimir Glavnyy <31897320+vglavnyy@users.noreply.github.com> Date: Tue, 2 Mar 2021 04:40:58 +0700 Subject: [PATCH] [idl_parser, JSON] Disable parsing of JSON for incomplete schemes (#6493) This commit disable JSON parsing for an incomplete scheme if JSON object is embedded into one file with the scheme. This should improve the quality of OSS-Fuzz inputs for the parser_fuzzer target. --- src/idl_parser.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/idl_parser.cpp b/src/idl_parser.cpp index 8cfd04b..87b999d 100644 --- a/src/idl_parser.cpp +++ b/src/idl_parser.cpp @@ -3189,6 +3189,9 @@ CheckedError Parser::ParseRoot(const char *source, const char **include_paths, } } } + // Parse JSON object only if the scheme has been parsed. + if (token_ == '{') { ECHECK(DoParseJson()); } + EXPECT(kTokenEof); return NoError(); } @@ -3308,7 +3311,7 @@ CheckedError Parser::DoParse(const char *source, const char **include_paths, } else if (IsIdent("namespace")) { ECHECK(ParseNamespace()); } else if (token_ == '{') { - ECHECK(DoParseJson()); + return NoError(); } else if (IsIdent("enum")) { ECHECK(ParseEnum(false, nullptr)); } else if (IsIdent("union")) { -- 2.7.4