FlatBuffers: Memory Efficient Serialization Library
Go to file
Vladimir Glavnyy 82836a62be
[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)
2021-01-04 12:39:12 -08:00
.appveyor Add support for fixed-size arrays (#5313) 2019-06-18 00:15:13 +02:00
.bazelci Don't test on Ubuntu 14.04 (#5302) 2019-04-24 10:28:35 -07:00
.github Fix Max CI build path (#6333) 2020-12-11 10:31:20 -08:00
.travis [CI] Adds formatter to CI (#6272) 2020-12-11 10:46:10 -08:00
CMake Version message should be a "STATUS" to avoid going to stderr. (#6316) 2020-12-07 11:50:29 -08:00
android Modernize android build and sample (#6229) 2020-11-05 14:23:37 -08:00
bazel Allow to run cpp tests under grpc/tests/ using bazel. (#6040) 2020-07-21 11:08:01 -07:00
conan Update Conan version Automatically (#5027) 2018-11-12 08:49:42 -08:00
dart [JS] FlexBuffers Fix for wrong type of offset and length values (#6107) 2020-09-10 12:36:37 -07:00
docs [Swift] Rebuild the way swift handles structs from scratch (#6326) 2020-12-17 14:55:32 -08:00
go Support size-prefixed buffers and add tests for size-prefixed messages (#6232) 2020-11-05 11:23:56 -08:00
grpc [Swift] Adds a format file and reformats the swift project (#6250) 2020-11-16 19:52:38 +03:00
include/flatbuffers [idl_parser] Improve stack overflow protection (#6364) 2021-01-04 12:39:12 -08:00
java/com/google/flatbuffers [Java] allowing larger buffer sizes when growing a byte buffer (#6118) 2020-09-17 11:55:24 -07:00
js [JS/TS] Rewrite flexbuffers JS to TS (#6148) 2020-10-19 13:11:35 -07:00
lobster [Lobster] optional scalars support 2020-08-18 14:00:02 -07:00
lua Lua cleanup (#5624) 2019-11-14 15:46:46 -08:00
mjs [JS/TS] Modernize TypeScript / JavaScript flatbuffers support (#6095) 2020-09-17 12:21:14 -07:00
net/FlatBuffers [C#] Optional Scalars (#6217) 2020-10-30 13:18:59 -07:00
php Performance improvement to generated+supporting PHP (#5080) 2018-12-20 16:10:20 -08:00
python Add vectorNumElements attribute to Builder for simpler vector creation. (#6328) 2020-12-14 12:00:28 -08:00
reflection Optional-ness in reflection (#6097) 2020-09-11 14:20:32 -07:00
rust [Rust] Shared String (#6367) 2021-01-04 06:18:35 -08:00
samples Updates license date to 2021 (#6378) 2021-01-02 11:46:46 +03:00
snap + Add `removable-media` plug to the snapcraft config (#6083) 2020-08-24 09:55:38 -07:00
src [idl_parser] Improve stack overflow protection (#6364) 2021-01-04 12:39:12 -08:00
swift Updates license date to 2021 (#6378) 2021-01-02 11:46:46 +03:00
tests [idl_parser] Improve stack overflow protection (#6364) 2021-01-04 12:39:12 -08:00
ts Add type annotation to unspecified array (#6264) 2020-11-16 10:49:53 -08:00
.clang-format Made all C++ files clang-formatted. 2017-12-21 11:45:02 -08:00
.editorconfig Unify line ending rules in '.editorconfig' and '.gitattributes' (#5231) 2019-03-18 12:47:07 -07:00
.eslintrc.js [JS/TS] Modernize TypeScript / JavaScript flatbuffers support (#6095) 2020-09-17 12:21:14 -07:00
.gitattributes Unify line ending rules in '.editorconfig' and '.gitattributes' (#5231) 2019-03-18 12:47:07 -07:00
.gitignore [C++] Add ParseJson(), Parser(Parser&&), update fuzzers (#6284) 2020-11-23 10:17:44 -08:00
.travis.yml [CI] Adds formatter to CI (#6272) 2020-12-11 10:46:10 -08:00
BUILD Allow to run cpp tests under grpc/tests/ using bazel. (#6040) 2020-07-21 11:08:01 -07:00
CMakeLists.txt [TS] GRPC Implementation (#6141) 2020-10-07 09:56:30 -07:00
CONTRIBUTING.md Fixed link to Google C++ Style Guide. 2017-02-08 16:37:25 -08:00
Formatters.md [CI] Adds formatter to CI (#6272) 2020-12-11 10:46:10 -08:00
LICENSE.txt Fixed Apache license not using canonical version. 2019-11-04 17:15:56 -08:00
WORKSPACE Bump version of rules_go to 0.24.5 (#6234) 2020-11-12 10:04:34 -08:00
appveyor.yml Moved various language tests from AppVeyor to GitHub Actions (#6300) 2020-12-03 11:26:27 -08:00
build_defs.bzl [Bazel] Add support for compatible_with and restricted_to (#5681) 2019-12-26 09:58:48 -08:00
composer.json
conanfile.py Update Conan version Automatically (#5027) 2018-11-12 08:49:42 -08:00
package.json [JS/TS] fix flatbuffers default export (#6123) 2020-09-21 09:46:24 -07:00
pom.xml updated maven build files 2020-03-16 11:33:42 -07:00
readme.md Minor doc updates: FlexBuffers C#, Discord, CppUsage. 2019-12-26 12:36:41 -08:00
swift.swiftformat [Swift] Adds a format file and reformats the swift project (#6250) 2020-11-16 19:52:38 +03:00
tsconfig.json [JS/TS] Rewrite flexbuffers JS to TS (#6148) 2020-10-19 13:11:35 -07:00
tsconfig.mjs.json [JS/TS] Rewrite flexbuffers JS to TS (#6148) 2020-10-19 13:11:35 -07:00
yarn.lock [JS/TS] Modernize TypeScript / JavaScript flatbuffers support (#6095) 2020-09-17 12:21:14 -07:00

readme.md

logo FlatBuffers

Build Status Build status Join the chat at https://gitter.im/google/flatbuffers Discord Chat Twitter Follow

FlatBuffers is a cross platform serialization library architected for maximum memory efficiency. It allows you to directly access serialized data without parsing/unpacking it first, while still having great forwards/backwards compatibility.

Go to our landing page to browse our documentation.

Supported operating systems

  • Windows
  • MacOS X
  • Linux
  • Android
  • And any others with a recent C++ compiler.

Supported programming languages

  • C++
  • C#
  • C
  • Dart
  • Go
  • Java
  • JavaScript
  • Lobster
  • Lua
  • PHP
  • Python
  • Rust
  • TypeScript

and more in progress...

Contribution

To contribute to this project, see CONTRIBUTING.

Licensing

Flatbuffers is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.