mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-03 04:21:13 +00:00
Merge branch 'master' of https://github.com/google/flatbuffers into fuzzer2
This commit is contained in:
@@ -868,6 +868,44 @@ void UnicodeTest() {
|
||||
"\\u5225\\u30B5\\u30A4\\u30C8\\x01\\x80\"}", true);
|
||||
}
|
||||
|
||||
void UnicodeSurrogatesTest() {
|
||||
flatbuffers::Parser parser;
|
||||
|
||||
TEST_EQ(
|
||||
parser.Parse(
|
||||
"table T { F:string (id: 0); }"
|
||||
"root_type T;"
|
||||
"{ F:\"\\uD83D\\uDCA9\"}"), true);
|
||||
auto root = flatbuffers::GetRoot<flatbuffers::Table>(
|
||||
parser.builder_.GetBufferPointer());
|
||||
auto string = root->GetPointer<flatbuffers::String *>(
|
||||
flatbuffers::FieldIndexToOffset(0));
|
||||
TEST_EQ(strcmp(string->c_str(), "\xF0\x9F\x92\xA9"), 0);
|
||||
}
|
||||
|
||||
void UnicodeInvalidSurrogatesTest() {
|
||||
TestError(
|
||||
"table T { F:string; }"
|
||||
"root_type T;"
|
||||
"{ F:\"\\uD800\"}", "unpaired high surrogate");
|
||||
TestError(
|
||||
"table T { F:string; }"
|
||||
"root_type T;"
|
||||
"{ F:\"\\uD800abcd\"}", "unpaired high surrogate");
|
||||
TestError(
|
||||
"table T { F:string; }"
|
||||
"root_type T;"
|
||||
"{ F:\"\\uD800\\n\"}", "unpaired high surrogate");
|
||||
TestError(
|
||||
"table T { F:string; }"
|
||||
"root_type T;"
|
||||
"{ F:\"\\uD800\\uD800\"}", "multiple high surrogates");
|
||||
TestError(
|
||||
"table T { F:string; }"
|
||||
"root_type T;"
|
||||
"{ F:\"\\uDC00\"}", "unpaired low surrogate");
|
||||
}
|
||||
|
||||
void UnknownFieldsTest() {
|
||||
flatbuffers::IDLOptions opts;
|
||||
opts.skip_unexpected_fields_in_json = true;
|
||||
@@ -916,6 +954,8 @@ int main(int /*argc*/, const char * /*argv*/[]) {
|
||||
EnumStringsTest();
|
||||
IntegerOutOfRangeTest();
|
||||
UnicodeTest();
|
||||
UnicodeSurrogatesTest();
|
||||
UnicodeInvalidSurrogatesTest();
|
||||
UnknownFieldsTest();
|
||||
|
||||
if (!testing_fails) {
|
||||
|
||||
Reference in New Issue
Block a user