mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-24 10:41:48 +00:00
reflection: check for valid union enum value during object verification (#5475)
... to avoid assertion failure or invalid access due to invalid vector index
This commit is contained in:
committed by
Wouter van Oortmerssen
parent
a20e71ac96
commit
a2485d4ecc
@@ -656,6 +656,7 @@ bool VerifyObject(flatbuffers::Verifier &v, const reflection::Schema &schema,
|
|||||||
if (utype != 0) {
|
if (utype != 0) {
|
||||||
// Means we have this union field present
|
// Means we have this union field present
|
||||||
auto fb_enum = schema.enums()->Get(field_def->type()->index());
|
auto fb_enum = schema.enums()->Get(field_def->type()->index());
|
||||||
|
if (utype >= fb_enum->values()->size()) return false;
|
||||||
auto child_obj = fb_enum->values()->Get(utype)->object();
|
auto child_obj = fb_enum->values()->Get(utype)->object();
|
||||||
if (!VerifyObject(v, schema, *child_obj,
|
if (!VerifyObject(v, schema, *child_obj,
|
||||||
flatbuffers::GetFieldT(*table, *field_def),
|
flatbuffers::GetFieldT(*table, *field_def),
|
||||||
|
|||||||
Reference in New Issue
Block a user