Added verifier alignment checking to table fields (#7018)

This commit is contained in:
Wouter van Oortmerssen
2022-01-14 14:39:15 -08:00
committed by GitHub
parent 96cc2f3ee3
commit a42e898979
18 changed files with 273 additions and 248 deletions

View File

@@ -413,7 +413,7 @@ struct Attacker FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
}
bool Verify(flatbuffers::Verifier &verifier) const {
return VerifyTableStart(verifier) &&
VerifyField<int32_t>(verifier, VT_SWORD_ATTACK_DAMAGE) &&
VerifyField<int32_t>(verifier, VT_SWORD_ATTACK_DAMAGE, 4) &&
verifier.EndTable();
}
AttackerT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
@@ -490,7 +490,7 @@ struct HandFan FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
}
bool Verify(flatbuffers::Verifier &verifier) const {
return VerifyTableStart(verifier) &&
VerifyField<int32_t>(verifier, VT_LENGTH) &&
VerifyField<int32_t>(verifier, VT_LENGTH, 4) &&
verifier.EndTable();
}
HandFanT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
@@ -607,7 +607,7 @@ struct Movie FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
}
bool Verify(flatbuffers::Verifier &verifier) const {
return VerifyTableStart(verifier) &&
VerifyField<uint8_t>(verifier, VT_MAIN_CHARACTER_TYPE) &&
VerifyField<uint8_t>(verifier, VT_MAIN_CHARACTER_TYPE, 1) &&
VerifyOffset(verifier, VT_MAIN_CHARACTER) &&
VerifyCharacter(verifier, main_character(), main_character_type()) &&
VerifyOffset(verifier, VT_CHARACTERS_TYPE) &&
@@ -794,13 +794,13 @@ inline bool VerifyCharacter(flatbuffers::Verifier &verifier, const void *obj, Ch
return verifier.VerifyTable(ptr);
}
case Character::Rapunzel: {
return verifier.Verify<Rapunzel>(static_cast<const uint8_t *>(obj), 0);
return verifier.VerifyField<Rapunzel>(static_cast<const uint8_t *>(obj), 0, 4);
}
case Character::Belle: {
return verifier.Verify<BookReader>(static_cast<const uint8_t *>(obj), 0);
return verifier.VerifyField<BookReader>(static_cast<const uint8_t *>(obj), 0, 4);
}
case Character::BookFan: {
return verifier.Verify<BookReader>(static_cast<const uint8_t *>(obj), 0);
return verifier.VerifyField<BookReader>(static_cast<const uint8_t *>(obj), 0, 4);
}
case Character::Other: {
auto ptr = reinterpret_cast<const flatbuffers::String *>(obj);
@@ -963,7 +963,7 @@ inline bool VerifyGadget(flatbuffers::Verifier &verifier, const void *obj, Gadge
return true;
}
case Gadget::FallingTub: {
return verifier.Verify<FallingTub>(static_cast<const uint8_t *>(obj), 0);
return verifier.VerifyField<FallingTub>(static_cast<const uint8_t *>(obj), 0, 4);
}
case Gadget::HandFan: {
auto ptr = reinterpret_cast<const HandFan *>(obj);