mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-13 16:15:26 +00:00
[idl_parser] Improve stack overflow protection (#6364)
* [idl_parser] Improve stack overflow protection Add stack overflow protection for Flexbuffer and nested Flatbuffer parsers. Replaces the `Recurse()` method by the new ParseDepthGuard RAII class. * Remove move operator from Parser. It was wrong decision to add move ctor and assignment into Parser class. These operators will make it extremely difficult to add constant or reference fields in the future. * Remove ';' from definition of FLATBUFFERS_DELETE_FUNC * Format code * Make this PR compatible with MSVC2010 (it doesn't support inherited ctor)
This commit is contained in:
@@ -821,9 +821,9 @@ class DetachedBuffer {
|
||||
#if !defined(FLATBUFFERS_CPP98_STL)
|
||||
// clang-format on
|
||||
// These may change access mode, leave these at end of public section
|
||||
FLATBUFFERS_DELETE_FUNC(DetachedBuffer(const DetachedBuffer &other))
|
||||
FLATBUFFERS_DELETE_FUNC(DetachedBuffer(const DetachedBuffer &other));
|
||||
FLATBUFFERS_DELETE_FUNC(
|
||||
DetachedBuffer &operator=(const DetachedBuffer &other))
|
||||
DetachedBuffer &operator=(const DetachedBuffer &other));
|
||||
// clang-format off
|
||||
#endif // !defined(FLATBUFFERS_CPP98_STL)
|
||||
// clang-format on
|
||||
@@ -1066,8 +1066,8 @@ class vector_downward {
|
||||
|
||||
private:
|
||||
// You shouldn't really be copying instances of this class.
|
||||
FLATBUFFERS_DELETE_FUNC(vector_downward(const vector_downward &))
|
||||
FLATBUFFERS_DELETE_FUNC(vector_downward &operator=(const vector_downward &))
|
||||
FLATBUFFERS_DELETE_FUNC(vector_downward(const vector_downward &));
|
||||
FLATBUFFERS_DELETE_FUNC(vector_downward &operator=(const vector_downward &));
|
||||
|
||||
Allocator *allocator_;
|
||||
bool own_allocator_;
|
||||
@@ -1891,7 +1891,7 @@ class FlatBufferBuilder {
|
||||
}
|
||||
|
||||
FLATBUFFERS_DELETE_FUNC(
|
||||
StructKeyComparator &operator=(const StructKeyComparator &))
|
||||
StructKeyComparator &operator=(const StructKeyComparator &));
|
||||
};
|
||||
/// @endcond
|
||||
|
||||
@@ -1966,7 +1966,8 @@ class FlatBufferBuilder {
|
||||
vector_downward &buf_;
|
||||
|
||||
private:
|
||||
FLATBUFFERS_DELETE_FUNC(TableKeyComparator &operator=(const TableKeyComparator &other))
|
||||
FLATBUFFERS_DELETE_FUNC(
|
||||
TableKeyComparator &operator=(const TableKeyComparator &other));
|
||||
};
|
||||
/// @endcond
|
||||
|
||||
|
||||
Reference in New Issue
Block a user