mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-24 07:41:48 +00:00
Fix #3775: Skip unknown field names if they're quoted
This commit is contained in:
@@ -1557,8 +1557,12 @@ CheckedError Parser::SkipJsonObject() {
|
|||||||
for (;;) {
|
for (;;) {
|
||||||
if ((!opts.strict_json || !fieldn) && Is('}')) break;
|
if ((!opts.strict_json || !fieldn) && Is('}')) break;
|
||||||
|
|
||||||
if (!Is(kTokenStringConstant))
|
if (!Is(kTokenStringConstant)) {
|
||||||
EXPECT(opts.strict_json ? kTokenStringConstant : kTokenIdentifier);
|
EXPECT(opts.strict_json ? kTokenStringConstant : kTokenIdentifier);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
NEXT();
|
||||||
|
}
|
||||||
|
|
||||||
EXPECT(':');
|
EXPECT(':');
|
||||||
ECHECK(SkipAnyJsonValue());
|
ECHECK(SkipAnyJsonValue());
|
||||||
|
|||||||
@@ -830,10 +830,13 @@ void UnknownFieldsTest() {
|
|||||||
TEST_EQ(parser.Parse("table T { str:string; i:int;}"
|
TEST_EQ(parser.Parse("table T { str:string; i:int;}"
|
||||||
"root_type T;"
|
"root_type T;"
|
||||||
"{ str:\"test\","
|
"{ str:\"test\","
|
||||||
|
"unknown_string:\"test\","
|
||||||
|
"\"unknown_string\":\"test\","
|
||||||
"unknown_int:10,"
|
"unknown_int:10,"
|
||||||
"unknown_float:1.0,"
|
"unknown_float:1.0,"
|
||||||
"unknown_array: [ 1, 2, 3, 4],"
|
"unknown_array: [ 1, 2, 3, 4],"
|
||||||
"unknown_object: { i: 10 },"
|
"unknown_object: { i: 10 },"
|
||||||
|
"\"unknown_object\": { \"i\": 10 },"
|
||||||
"i:10}"), true);
|
"i:10}"), true);
|
||||||
|
|
||||||
std::string jsongen;
|
std::string jsongen;
|
||||||
|
|||||||
Reference in New Issue
Block a user