Skip to content

Commit 75143f8

Browse files
committedMay 3, 2023
fix possible null dereference for nested_root accessor
1 parent fb4f6fb commit 75143f8

File tree

4 files changed

+36
-12
lines changed

4 files changed

+36
-12
lines changed
 

‎tests/cpp17/generated_cpp17/monster_test_generated.h

+9-3
Original file line numberDiff line numberDiff line change
@@ -1500,7 +1500,9 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table {
15001500
return GetPointer<::flatbuffers::Vector<uint8_t> *>(VT_TESTNESTEDFLATBUFFER);
15011501
}
15021502
const MyGame::Example::Monster *testnestedflatbuffer_nested_root() const {
1503-
return ::flatbuffers::GetRoot<MyGame::Example::Monster>(testnestedflatbuffer()->Data());
1503+
const auto _f = testnestedflatbuffer();
1504+
return _f ? ::flatbuffers::GetRoot<MyGame::Example::Monster>(_f->Data())
1505+
: nullptr;
15041506
}
15051507
const MyGame::Example::Stat *testempty() const {
15061508
return GetPointer<const MyGame::Example::Stat *>(VT_TESTEMPTY);
@@ -1605,7 +1607,9 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table {
16051607
return GetPointer<::flatbuffers::Vector<uint8_t> *>(VT_FLEX);
16061608
}
16071609
flexbuffers::Reference flex_flexbuffer_root() const {
1608-
return flexbuffers::GetRoot(flex()->Data(), flex()->size());
1610+
const auto _f = flex();
1611+
return _f ? flexbuffers::GetRoot(_f->Data(), _f->size())
1612+
: flexbuffers::Reference();
16091613
}
16101614
const ::flatbuffers::Vector<const MyGame::Example::Test *> *test5() const {
16111615
return GetPointer<const ::flatbuffers::Vector<const MyGame::Example::Test *> *>(VT_TEST5);
@@ -1735,7 +1739,9 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table {
17351739
return GetPointer<::flatbuffers::Vector<uint8_t> *>(VT_TESTREQUIREDNESTEDFLATBUFFER);
17361740
}
17371741
const MyGame::Example::Monster *testrequirednestedflatbuffer_nested_root() const {
1738-
return ::flatbuffers::GetRoot<MyGame::Example::Monster>(testrequirednestedflatbuffer()->Data());
1742+
const auto _f = testrequirednestedflatbuffer();
1743+
return _f ? ::flatbuffers::GetRoot<MyGame::Example::Monster>(_f->Data())
1744+
: nullptr;
17391745
}
17401746
const ::flatbuffers::Vector<::flatbuffers::Offset<MyGame::Example::Stat>> *scalar_key_sorted_tables() const {
17411747
return GetPointer<const ::flatbuffers::Vector<::flatbuffers::Offset<MyGame::Example::Stat>> *>(VT_SCALAR_KEY_SORTED_TABLES);

‎tests/monster_test_suffix/ext_only/monster_test_generated.hpp

+9-3
Original file line numberDiff line numberDiff line change
@@ -1487,7 +1487,9 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table {
14871487
return GetPointer<::flatbuffers::Vector<uint8_t> *>(VT_TESTNESTEDFLATBUFFER);
14881488
}
14891489
const MyGame::Example::Monster *testnestedflatbuffer_nested_root() const {
1490-
return ::flatbuffers::GetRoot<MyGame::Example::Monster>(testnestedflatbuffer()->Data());
1490+
const auto _f = testnestedflatbuffer();
1491+
return _f ? ::flatbuffers::GetRoot<MyGame::Example::Monster>(_f->Data())
1492+
: nullptr;
14911493
}
14921494
const MyGame::Example::Stat *testempty() const {
14931495
return GetPointer<const MyGame::Example::Stat *>(VT_TESTEMPTY);
@@ -1592,7 +1594,9 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table {
15921594
return GetPointer<::flatbuffers::Vector<uint8_t> *>(VT_FLEX);
15931595
}
15941596
flexbuffers::Reference flex_flexbuffer_root() const {
1595-
return flexbuffers::GetRoot(flex()->Data(), flex()->size());
1597+
const auto _f = flex();
1598+
return _f ? flexbuffers::GetRoot(_f->Data(), _f->size())
1599+
: flexbuffers::Reference();
15961600
}
15971601
const ::flatbuffers::Vector<const MyGame::Example::Test *> *test5() const {
15981602
return GetPointer<const ::flatbuffers::Vector<const MyGame::Example::Test *> *>(VT_TEST5);
@@ -1722,7 +1726,9 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table {
17221726
return GetPointer<::flatbuffers::Vector<uint8_t> *>(VT_TESTREQUIREDNESTEDFLATBUFFER);
17231727
}
17241728
const MyGame::Example::Monster *testrequirednestedflatbuffer_nested_root() const {
1725-
return ::flatbuffers::GetRoot<MyGame::Example::Monster>(testrequirednestedflatbuffer()->Data());
1729+
const auto _f = testrequirednestedflatbuffer();
1730+
return _f ? ::flatbuffers::GetRoot<MyGame::Example::Monster>(_f->Data())
1731+
: nullptr;
17261732
}
17271733
const ::flatbuffers::Vector<::flatbuffers::Offset<MyGame::Example::Stat>> *scalar_key_sorted_tables() const {
17281734
return GetPointer<const ::flatbuffers::Vector<::flatbuffers::Offset<MyGame::Example::Stat>> *>(VT_SCALAR_KEY_SORTED_TABLES);

‎tests/monster_test_suffix/filesuffix_only/monster_test_suffix.h

+9-3
Original file line numberDiff line numberDiff line change
@@ -1487,7 +1487,9 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table {
14871487
return GetPointer<::flatbuffers::Vector<uint8_t> *>(VT_TESTNESTEDFLATBUFFER);
14881488
}
14891489
const MyGame::Example::Monster *testnestedflatbuffer_nested_root() const {
1490-
return ::flatbuffers::GetRoot<MyGame::Example::Monster>(testnestedflatbuffer()->Data());
1490+
const auto _f = testnestedflatbuffer();
1491+
return _f ? ::flatbuffers::GetRoot<MyGame::Example::Monster>(_f->Data())
1492+
: nullptr;
14911493
}
14921494
const MyGame::Example::Stat *testempty() const {
14931495
return GetPointer<const MyGame::Example::Stat *>(VT_TESTEMPTY);
@@ -1592,7 +1594,9 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table {
15921594
return GetPointer<::flatbuffers::Vector<uint8_t> *>(VT_FLEX);
15931595
}
15941596
flexbuffers::Reference flex_flexbuffer_root() const {
1595-
return flexbuffers::GetRoot(flex()->Data(), flex()->size());
1597+
const auto _f = flex();
1598+
return _f ? flexbuffers::GetRoot(_f->Data(), _f->size())
1599+
: flexbuffers::Reference();
15961600
}
15971601
const ::flatbuffers::Vector<const MyGame::Example::Test *> *test5() const {
15981602
return GetPointer<const ::flatbuffers::Vector<const MyGame::Example::Test *> *>(VT_TEST5);
@@ -1722,7 +1726,9 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table {
17221726
return GetPointer<::flatbuffers::Vector<uint8_t> *>(VT_TESTREQUIREDNESTEDFLATBUFFER);
17231727
}
17241728
const MyGame::Example::Monster *testrequirednestedflatbuffer_nested_root() const {
1725-
return ::flatbuffers::GetRoot<MyGame::Example::Monster>(testrequirednestedflatbuffer()->Data());
1729+
const auto _f = testrequirednestedflatbuffer();
1730+
return _f ? ::flatbuffers::GetRoot<MyGame::Example::Monster>(_f->Data())
1731+
: nullptr;
17261732
}
17271733
const ::flatbuffers::Vector<::flatbuffers::Offset<MyGame::Example::Stat>> *scalar_key_sorted_tables() const {
17281734
return GetPointer<const ::flatbuffers::Vector<::flatbuffers::Offset<MyGame::Example::Stat>> *>(VT_SCALAR_KEY_SORTED_TABLES);

‎tests/monster_test_suffix/monster_test_suffix.hpp

+9-3
Original file line numberDiff line numberDiff line change
@@ -1487,7 +1487,9 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table {
14871487
return GetPointer<::flatbuffers::Vector<uint8_t> *>(VT_TESTNESTEDFLATBUFFER);
14881488
}
14891489
const MyGame::Example::Monster *testnestedflatbuffer_nested_root() const {
1490-
return ::flatbuffers::GetRoot<MyGame::Example::Monster>(testnestedflatbuffer()->Data());
1490+
const auto _f = testnestedflatbuffer();
1491+
return _f ? ::flatbuffers::GetRoot<MyGame::Example::Monster>(_f->Data())
1492+
: nullptr;
14911493
}
14921494
const MyGame::Example::Stat *testempty() const {
14931495
return GetPointer<const MyGame::Example::Stat *>(VT_TESTEMPTY);
@@ -1592,7 +1594,9 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table {
15921594
return GetPointer<::flatbuffers::Vector<uint8_t> *>(VT_FLEX);
15931595
}
15941596
flexbuffers::Reference flex_flexbuffer_root() const {
1595-
return flexbuffers::GetRoot(flex()->Data(), flex()->size());
1597+
const auto _f = flex();
1598+
return _f ? flexbuffers::GetRoot(_f->Data(), _f->size())
1599+
: flexbuffers::Reference();
15961600
}
15971601
const ::flatbuffers::Vector<const MyGame::Example::Test *> *test5() const {
15981602
return GetPointer<const ::flatbuffers::Vector<const MyGame::Example::Test *> *>(VT_TEST5);
@@ -1722,7 +1726,9 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table {
17221726
return GetPointer<::flatbuffers::Vector<uint8_t> *>(VT_TESTREQUIREDNESTEDFLATBUFFER);
17231727
}
17241728
const MyGame::Example::Monster *testrequirednestedflatbuffer_nested_root() const {
1725-
return ::flatbuffers::GetRoot<MyGame::Example::Monster>(testrequirednestedflatbuffer()->Data());
1729+
const auto _f = testrequirednestedflatbuffer();
1730+
return _f ? ::flatbuffers::GetRoot<MyGame::Example::Monster>(_f->Data())
1731+
: nullptr;
17261732
}
17271733
const ::flatbuffers::Vector<::flatbuffers::Offset<MyGame::Example::Stat>> *scalar_key_sorted_tables() const {
17281734
return GetPointer<const ::flatbuffers::Vector<::flatbuffers::Offset<MyGame::Example::Stat>> *>(VT_SCALAR_KEY_SORTED_TABLES);

0 commit comments

Comments
 (0)