Handle root offset and root table vtable invalidation (#7177)

* Handle invalid root offset

* Handle vtable offset invalidation

* Added script generator. Add more cases through vtable ref table size

* review responses

* vtable offset validation

* Moved padding insertion to the end. Tests invalid field lenghts

* table offsets validated. Added type after field

* validate string length

* add todo

* invalid vector length

* invalid structs

* general cleanup

* reworded invalid offsets

* example for vector of structs

* invalid vector of tables

* invalid vector of strings

* invalid vector of scalars

* vector of unions

* validate union type value

* invalid vector union type values
This commit is contained in:
Derek Bailey
2022-03-23 21:51:32 -07:00
committed by GitHub
parent 2ad408697f
commit e2be0c0b06
52 changed files with 4712 additions and 337 deletions

View File

@@ -37,6 +37,7 @@ table Type {
index:int = -1; // If base_type == Object, index into "objects" below.
// If base_type == Union, UnionType, or integral derived
// from an enum, index into "enums" below.
// If base_type == Vector && element == Union or UnionType.
fixed_length:uint16 = 0; // Only if base_type == Array.
/// The size (octets) of the `base_type` field.
base_size:uint = 4; // 4 Is a common size due to offsets being that size.

View File

@@ -96,6 +96,7 @@ static std::string ToValueString(const BinaryRegion &region,
return ToValueString<uint64_t>(region, binary);
case BinaryRegionType::Double: return ToValueString<double>(region, binary);
case BinaryRegionType::Float: return ToValueString<float>(region, binary);
case BinaryRegionType::UType: return ToValueString<uint8_t>(region, binary);
// Handle Offsets separately, incase they add additional details.
case BinaryRegionType::UOffset:

File diff suppressed because it is too large Load Diff

View File

@@ -18,9 +18,12 @@
#define FLATBUFFERS_BINARY_ANNOTATOR_H_
#include <map>
#include <string>
#include <vector>
#include "flatbuffers/base.h"
#include "flatbuffers/reflection.h"
#include "flatbuffers/stl_emulation.h"
namespace flatbuffers {
@@ -41,7 +44,8 @@ enum class BinaryRegionType {
Uint64 = 13,
Int64 = 14,
Float = 15,
Double = 16
Double = 16,
UType = 17,
};
template<typename T> static inline T GetScalar(const uint8_t *binary) {
@@ -114,7 +118,7 @@ struct BinarySection {
inline static BinaryRegionType GetRegionType(reflection::BaseType base_type) {
switch (base_type) {
case reflection::UType: return BinaryRegionType::Uint8;
case reflection::UType: return BinaryRegionType::UType;
case reflection::Bool: return BinaryRegionType::Uint8;
case reflection::Byte: return BinaryRegionType::Uint8;
case reflection::UByte: return BinaryRegionType::Uint8;
@@ -148,6 +152,7 @@ inline static std::string ToString(const BinaryRegionType type) {
case BinaryRegionType::Int64: return "int64_t";
case BinaryRegionType::Double: return "double";
case BinaryRegionType::Float: return "float";
case BinaryRegionType::UType: return "UType8";
case BinaryRegionType::Unknown: return "?uint8_t";
default: return "todo";
}
@@ -155,12 +160,15 @@ inline static std::string ToString(const BinaryRegionType type) {
class BinaryAnnotator {
public:
explicit BinaryAnnotator(const uint8_t *const bfbs, const int64_t bfbs_length,
const uint8_t *const binary)
explicit BinaryAnnotator(const uint8_t *const bfbs,
const uint64_t bfbs_length,
const uint8_t *const binary,
const uint64_t binary_length)
: bfbs_(bfbs),
bfbs_length_(bfbs_length),
schema_(reflection::GetSchema(bfbs)),
binary_(binary) {}
binary_(binary),
binary_length_(binary_length) {}
std::map<uint64_t, BinarySection> Annotate();
@@ -180,7 +188,8 @@ class BinaryAnnotator {
uint64_t BuildHeader(uint64_t offset);
void BuildVTable(uint64_t offset, const reflection::Object *table);
void BuildVTable(uint64_t offset, const reflection::Object *table,
uint64_t offset_of_referring_table);
void BuildTable(uint64_t offset, const BinarySectionType type,
const reflection::Object *table);
@@ -198,19 +207,84 @@ class BinaryAnnotator {
std::string BuildUnion(uint64_t offset, uint8_t realized_type,
const reflection::Field *field);
void FixMissingRegions();
void FixMissingSections();
template<typename T> inline T GetScalar(uint64_t offset) {
return *reinterpret_cast<const T *>(binary_ + offset);
inline bool IsValidOffset(const uint64_t offset) const {
return offset < binary_length_;
}
// Determines if performing a GetScalar request for `T` at `offset` would read
// passed the end of the binary.
template<typename T> inline bool IsValidRead(const uint64_t offset) const {
return IsValidRead(offset, sizeof(T));
}
inline bool IsValidRead(const uint64_t offset, const uint64_t length) const {
return IsValidOffset(offset + length - 1);
}
// Calculate the number of bytes remaining from the given offset. If offset is
// > binary_length, 0 is returned.
uint64_t RemainingBytes(const uint64_t offset) const {
return IsValidOffset(offset) ? binary_length_ - offset : 0;
}
template<typename T>
flatbuffers::Optional<T> ReadScalar(const uint64_t offset) const {
if (!IsValidRead<T>(offset)) { return flatbuffers::nullopt; }
return flatbuffers::ReadScalar<T>(binary_ + offset);
}
// Adds the provided `section` keyed by the `offset` it occurs at. If a
// section is already added at that offset, it doesn't replace the exisiting
// one.
void AddSection(const uint64_t offset, const BinarySection &section) {
sections_.insert(std::make_pair(offset, section));
}
bool IsInlineField(const reflection::Field *const field) {
if (field->type()->base_type() == reflection::BaseType::Obj) {
return schema_->objects()->Get(field->type()->index())->is_struct();
}
return IsScalar(field->type()->base_type());
}
bool IsUnionType(const reflection::BaseType type) {
return (type == reflection::BaseType::UType ||
type == reflection::BaseType::Union);
}
bool IsUnionType(const reflection::Field *const field) {
return IsUnionType(field->type()->base_type()) &&
field->type()->index() >= 0;
}
bool IsValidUnionValue(const reflection::Field *const field,
const uint8_t value) {
return IsUnionType(field) &&
IsValidUnionValue(field->type()->index(), value);
}
bool IsValidUnionValue(const uint32_t enum_id, const uint8_t value) {
if (enum_id >= schema_->enums()->size()) { return false; }
const reflection::Enum *enum_def = schema_->enums()->Get(enum_id);
if (enum_def == nullptr) { return false; }
return value < enum_def->values()->size();
}
// The schema for the binary file
const uint8_t *bfbs_;
const int64_t bfbs_length_;
const uint64_t bfbs_length_;
const reflection::Schema *schema_;
// The binary data itself.
const uint8_t *binary_;
const uint64_t binary_length_;
// Map of binary offset to vtables, to dedupe vtables.
std::map<uint64_t, VTable> vtables_;

View File

@@ -350,8 +350,8 @@ void FlatCompiler::AnnotateBinaries(
reinterpret_cast<const uint8_t *>(binary_contents.c_str());
const size_t binary_size = binary_contents.size();
flatbuffers::BinaryAnnotator binary_annotator(binary_schema,
binary_schema_size, binary);
flatbuffers::BinaryAnnotator binary_annotator(
binary_schema, binary_schema_size, binary, binary_size);
auto annotations = binary_annotator.Annotate();

View File

@@ -46,11 +46,11 @@ root_table (AnnotatedBinary.Foo):
+0x0048 | 00 00 00 | uint8_t[3] | ... | padding
+0x004B | 01 | uint8_t | 0x01 (1) | table field `healthy` (Bool)
+0x004C | 02 | uint8_t | 0x02 (2) | table field `meal` (Byte)
+0x004D | 02 | uint8_t | 0x02 (2) | table field `bar_baz_type` (UType)
+0x004E | 01 | uint8_t | 0x01 (1) | table field `measurement_type` (UType)
+0x004F | 01 | uint8_t | 0x01 (1) | table field `anything_type` (UType)
+0x004D | 02 | UType8 | 0x02 (2) | table field `bar_baz_type` (UType)
+0x004E | 01 | UType8 | 0x01 (1) | table field `measurement_type` (UType)
+0x004F | 01 | UType8 | 0x01 (1) | table field `anything_type` (UType)
+0x0050 | D2 04 00 00 | uint32_t | 0x000004D2 (1234) | table field `counter` (Int)
+0x0054 | 28 02 00 00 | UOffset32 | 0x00000228 (552) Loc: +0x027C | offset to field `bar`
+0x0054 | 28 02 00 00 | UOffset32 | 0x00000228 (552) Loc: +0x027C | offset to field `bar` (table)
+0x0058 | 01 00 00 00 | uint32_t | 0x00000001 (1) | struct field `AnnotatedBinary.Building.floors` (Int)
+0x005C | 02 00 00 00 | uint32_t | 0x00000002 (2) | struct field `AnnotatedBinary.Building.doors` (Int)
+0x0060 | 0C 00 00 00 | uint32_t | 0x0000000C (12) | struct field `AnnotatedBinary.Building.windows` (Int)
@@ -61,20 +61,20 @@ root_table (AnnotatedBinary.Foo):
+0x0071 | 02 | uint8_t | 0x02 (2) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
+0x0072 | 03 | uint8_t | 0x03 (3) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
+0x0073 | 00 | uint8_t[1] | . | padding
+0x0074 | C8 01 00 00 | UOffset32 | 0x000001C8 (456) Loc: +0x023C | offset to field `name`
+0x0078 | 5C 01 00 00 | UOffset32 | 0x0000015C (348) Loc: +0x01D4 | offset to field `bars`
+0x0074 | C8 01 00 00 | UOffset32 | 0x000001C8 (456) Loc: +0x023C | offset to field `name` (string)
+0x0078 | 5C 01 00 00 | UOffset32 | 0x0000015C (348) Loc: +0x01D4 | offset to field `bars` (vector)
+0x007C | 50 01 00 00 | UOffset32 | 0x00000150 (336) Loc: +0x01CC | offset to field `bar_baz` (union of type `Baz`)
+0x0080 | 34 01 00 00 | UOffset32 | 0x00000134 (308) Loc: +0x01B4 | offset to field `accounts`
+0x0084 | 24 01 00 00 | UOffset32 | 0x00000124 (292) Loc: +0x01A8 | offset to field `bob`
+0x0088 | 14 01 00 00 | UOffset32 | 0x00000114 (276) Loc: +0x019C | offset to field `alice`
+0x0080 | 34 01 00 00 | UOffset32 | 0x00000134 (308) Loc: +0x01B4 | offset to field `accounts` (vector)
+0x0084 | 24 01 00 00 | UOffset32 | 0x00000124 (292) Loc: +0x01A8 | offset to field `bob` (string)
+0x0088 | 14 01 00 00 | UOffset32 | 0x00000114 (276) Loc: +0x019C | offset to field `alice` (string)
+0x008C | 0D 00 00 00 | uint32_t | 0x0000000D (13) | table field `just_i32` (Int)
+0x0090 | DC 00 00 00 | UOffset32 | 0x000000DC (220) Loc: +0x016C | offset to field `names`
+0x0094 | A0 00 00 00 | UOffset32 | 0x000000A0 (160) Loc: +0x0134 | offset to field `points_of_interest`
+0x0098 | 94 00 00 00 | UOffset32 | 0x00000094 (148) Loc: +0x012C | offset to field `foobars_type`
+0x009C | 38 00 00 00 | UOffset32 | 0x00000038 (56) Loc: +0x00D4 | offset to field `foobars`
+0x0090 | DC 00 00 00 | UOffset32 | 0x000000DC (220) Loc: +0x016C | offset to field `names` (vector)
+0x0094 | A0 00 00 00 | UOffset32 | 0x000000A0 (160) Loc: +0x0134 | offset to field `points_of_interest` (vector)
+0x0098 | 94 00 00 00 | UOffset32 | 0x00000094 (148) Loc: +0x012C | offset to field `foobars_type` (vector)
+0x009C | 38 00 00 00 | UOffset32 | 0x00000038 (56) Loc: +0x00D4 | offset to field `foobars` (vector)
+0x00A0 | 33 00 00 00 | UOffset32 | 0x00000033 (51) Loc: +0x00D3 | offset to field `measurement` (union of type `Tolerance`)
+0x00A4 | 1C 00 00 00 | UOffset32 | 0x0000001C (28) Loc: +0x00C0 | offset to field `anything` (union of type `Bar`)
+0x00A8 | 04 00 00 00 | UOffset32 | 0x00000004 (4) Loc: +0x00AC | offset to field `charlie`
+0x00A8 | 04 00 00 00 | UOffset32 | 0x00000004 (4) Loc: +0x00AC | offset to field `charlie` (string)
string (AnnotatedBinary.Foo.charlie):
+0x00AC | 05 00 00 00 | uint32_t | 0x00000005 (5) | length of string
@@ -108,7 +108,7 @@ vector (AnnotatedBinary.Foo.foobars):
table (AnnotatedBinary.Bar):
+0x00E4 | D2 FE FF FF | SOffset32 | 0xFFFFFED2 (-302) Loc: +0x0212 | offset to vtable
+0x00E8 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float)
+0x00EC | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x00FC | offset to field `c`
+0x00EC | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x00FC | offset to field `c` (table)
+0x00F0 | 00 00 00 00 00 D8 8E 40 | double | 0x408ED80000000000 (987.000000) | table field `a` (Double)
+0x00F8 | 00 00 00 00 | uint8_t[4] | .... | padding
@@ -127,7 +127,7 @@ table (AnnotatedBinary.Baz):
table (AnnotatedBinary.Bar):
+0x010C | FA FE FF FF | SOffset32 | 0xFFFFFEFA (-262) Loc: +0x0212 | offset to vtable
+0x0110 | 00 00 E4 43 | float | 0x43E40000 (456.000000) | table field `b` (Float)
+0x0114 | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x0124 | offset to field `c`
+0x0114 | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x0124 | offset to field `c` (table)
+0x0118 | 00 00 00 00 00 C0 5E 40 | double | 0x405EC00000000000 (123.000000) | table field `a` (Double)
+0x0120 | 00 00 00 00 | uint8_t[4] | .... | padding
@@ -138,9 +138,9 @@ table (AnnotatedBinary.Baz):
vector (AnnotatedBinary.Foo.foobars_type):
+0x012C | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x0130 | 01 | uint8_t | 0x01 (1) | value[0]
+0x0131 | 02 | uint8_t | 0x02 (2) | value[1]
+0x0132 | 01 | uint8_t | 0x01 (1) | value[2]
+0x0130 | 01 | UType8 | 0x01 (1) | value[0]
+0x0131 | 02 | UType8 | 0x02 (2) | value[1]
+0x0132 | 01 | UType8 | 0x01 (1) | value[2]
vector (AnnotatedBinary.Foo.points_of_interest):
+0x0134 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
@@ -226,7 +226,7 @@ vtable (AnnotatedBinary.Bar):
table (AnnotatedBinary.Bar):
+0x01EC | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x01E2 | offset to vtable
+0x01F0 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float)
+0x01F4 | 18 00 00 00 | UOffset32 | 0x00000018 (24) Loc: +0x020C | offset to field `c`
+0x01F4 | 18 00 00 00 | UOffset32 | 0x00000018 (24) Loc: +0x020C | offset to field `c` (table)
+0x01F8 | 00 00 00 00 00 D8 8E 40 | double | 0x408ED80000000000 (987.000000) | table field `a` (Double)
+0x0200 | 00 00 00 00 00 00 | uint8_t[6] | ...... | padding
@@ -250,7 +250,7 @@ vtable (AnnotatedBinary.Bar):
table (AnnotatedBinary.Bar):
+0x021C | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x0212 | offset to vtable
+0x0220 | 00 00 E4 43 | float | 0x43E40000 (456.000000) | table field `b` (Float)
+0x0224 | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x0234 | offset to field `c`
+0x0224 | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x0234 | offset to field `c` (table)
+0x0228 | 00 00 00 00 00 C0 5E 40 | double | 0x405EC00000000000 (123.000000) | table field `a` (Double)
+0x0230 | 00 00 00 00 | uint8_t[4] | .... | padding
@@ -282,7 +282,7 @@ vtable (AnnotatedBinary.Bar):
table (AnnotatedBinary.Bar):
+0x027C | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x0272 | offset to vtable
+0x0280 | 65 20 71 49 | float | 0x49712065 (987654.312500) | table field `b` (Float)
+0x0284 | 14 00 00 00 | UOffset32 | 0x00000014 (20) Loc: +0x0298 | offset to field `c`
+0x0284 | 14 00 00 00 | UOffset32 | 0x00000014 (20) Loc: +0x0298 | offset to field `c` (table)
+0x0288 | C9 76 BE 9F 0C 24 FE 40 | double | 0x40FE240C9FBE76C9 (123456.789000) | table field `a` (Double)
+0x0290 | 00 00 | uint8_t[2] | .. | padding

View File

@@ -0,0 +1,76 @@
#!/usr/bin/env python3
#
# Copyright 2021 Google Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import platform
import subprocess
from pathlib import Path
# Get the path where this script is located so we can invoke the script from
# any directory and have the paths work correctly.
script_path = Path(__file__).parent.resolve()
# Get the root path as an absolute path, so all derived paths are absolute.
root_path = script_path.parent.parent.absolute()
# Get the location of the flatc executable, reading from the first command line
# argument or defaulting to default names.
flatc_exe = Path(
("flatc" if not platform.system() == "Windows" else "flatc.exe")
)
# Find and assert flatc compiler is present.
if root_path in flatc_exe.parents:
flatc_exe = flatc_exe.relative_to(root_path)
flatc_path = Path(root_path, flatc_exe)
assert flatc_path.exists(), "Cannot find the flatc compiler " + str(flatc_path)
# Specify the other paths that will be referenced
tests_path = Path(script_path, "tests")
def flatc_annotate(schema, file, cwd=script_path):
cmd = [str(flatc_path), "--annotate", schema, file]
result = subprocess.run(cmd, cwd=str(cwd), check=True)
test_files = [
"annotated_binary.bin",
"tests/invalid_root_offset.bin",
"tests/invalid_root_table_too_short.bin",
"tests/invalid_root_table_vtable_offset.bin",
"tests/invalid_string_length.bin",
"tests/invalid_string_length_cut_short.bin",
"tests/invalid_struct_array_field_cut_short.bin",
"tests/invalid_struct_field_cut_short.bin",
"tests/invalid_table_field_size.bin",
"tests/invalid_table_field_offset.bin",
"tests/invalid_union_type_value.bin",
"tests/invalid_vector_length_cut_short.bin",
"tests/invalid_vector_scalars_cut_short.bin",
"tests/invalid_vector_strings_cut_short.bin",
"tests/invalid_vector_structs_cut_short.bin",
"tests/invalid_vector_tables_cut_short.bin",
"tests/invalid_vector_unions_cut_short.bin",
"tests/invalid_vector_union_type_value.bin",
"tests/invalid_vtable_ref_table_size_short.bin",
"tests/invalid_vtable_ref_table_size.bin",
"tests/invalid_vtable_size_short.bin",
"tests/invalid_vtable_size.bin",
"tests/invalid_vtable_field_offset.bin",
]
for test_file in test_files:
flatc_annotate("annotated_binary.fbs", test_file)

View File

@@ -0,0 +1,125 @@
# Tests for Annotated Binaries
## Invalid Binary Tests
The following is a collection of manually corrupted binaries based off of
`..\annotated_binary.bin`. Each file changes some offset or length/size entry to
point so an invalid spot, and the generated annotated binaries demonstrate that
those corruptions can be spotted.
Each of these files were ran with the following command:
```sh
cd .tests/annotated_binary
../../flatc -annotate annotated_binary.fbs tests/{binary_file}...
```
### `invalid_root_offset.bin`
Changed first two bytes from `4400` to `FFFF` which produces an offset larger
than the binary.
### `invalid_root_table_vtable_offset.bin`
Changed two bytes at 0x0044 from `3A00` to `FFFF` which points to an offset
outside the binary.
### `invalid_root_table_too_short.bin`
Truncated the file to 0x46 bytes, as that cuts into the vtable offset field of
the root table.
```sh
truncate annotated_binary.bin --size=70 >> invalid_root_table_too_short.bin
```
### `invalid_vtable_size.bin`
Changed two bytes at 0x000A from `3A00` to `FFFF` which size is larger than the
binary.
### `invalid_vtable_size_short.bin`
Changed two bytes at 0x000A from `3A00` to `0100` which size is smaller than the
minimum size of 4 bytes.
### `invalid_vtable_ref_table_size.bin`
Changed two bytes at 0x000C from `6800` to `FFFF` which size is larger than the
binary.
### `invalid_vtable_ref_table_size_short.bin`
Changed two bytes at 0x000C from `6800` to `0100` which size is smaller than
the minimum size of 4 bytes.
### `invalid_vtable_field_offset.bin`
Changed two bytes at 0x0016 from `1000` to `FFFF` which points to a field larger
than the binary.
### `invalid_table_field_size.bin`
Truncated the file to 0x52 bytes, as that cuts a Uint32t value in half.
### `invalid_table_field_offset.bin`
Truncated the file to 0x96 bytes, as that cuts a UOffset32 value in half. Also,
changed two bytes at 0x90 from `DC00` to `FFFF` which points to a section larger
than the binary.
### `invalid_string_length_cut_short.bin`
Truncated the file to 0xAD bytes, as that cuts string length Uint32t value in
half.
### `invalid_string_length.bin`
Changed two bytes at 0x00AC from `0500` to `FFFF` which is a string length
larger than the binary.
### `invalid_vector_length_cut_short.bin`
Truncated the file to 0x0136 bytes, as that cuts vector length Uint32t value in
half.
### `invalid_struct_field_cut_short.bin`
Truncated the file to 0x5d bytes, as that cuts struct field value in half.
### `invalid_struct_array_field_cut_short.bin`
Truncated the file to 0x6A bytes, as that cuts struct array field value in half.
### `invalid_vector_structs_cut_short.bin`
Truncated the file to 0x0154 bytes, as that cuts into a vector of structs.
### `invalid_vector_tables_cut_short.bin`
Truncated the file to 0x01DE bytes, as that cuts into a vector of table offsets.
### `invalid_vector_strings_cut_short.bin`
Truncated the file to 0x0176 bytes, as that cuts into a vector of string
offsets.
### `invalid_vector_scalars_cut_short.bin`
Truncated the file to 0x01C1 bytes, as that cuts into a vector of scalars
values.
### `invalid_vector_unions_cut_short.bin`
Truncated the file to 0x01DE bytes, as that cuts into a vector of union offset
values.
### `invalid_union_type_value.bin`
Changed one byte at 0x004D from `02` to `FF` which is a union type value that is
larger than the enum.
### `invalid_vector_union_type_value.bin`
Changed one byte at 0x0131 from `02` to `FF` which is a vector union type value
that is larger than the enum.

View File

@@ -0,0 +1,93 @@
// Annotated Flatbuffer Binary
//
// Schema file: annotated_binary.fbs
// Binary file: tests/invalid_root_offset.bin
header:
+0x0000 | FF FF 00 00 | UOffset32 | 0x0000FFFF (65535) Loc: +0xFFFF | ERROR: offset to root table `AnnotatedBinary.Foo`. Invalid offset, points to outside the binary.
+0x0004 | 41 4E 4E 4F | char[4] | ANNO | File Identifier
unknown (no known references):
+0x0008 | 00 00 3A 00 68 00 0C 00 | ?uint8_t[664] | ..:.h... | WARN: nothing refers to this section.
+0x0010 | 07 00 00 00 08 00 10 00 | | ........
+0x0018 | 14 00 30 00 34 00 09 00 | | ..0.4...
+0x0020 | 38 00 3C 00 40 00 44 00 | | 8.<.@.D.
+0x0028 | 00 00 00 00 48 00 4C 00 | | ....H.L.
+0x0030 | 50 00 54 00 58 00 0A 00 | | P.T.X...
+0x0038 | 5C 00 0B 00 60 00 00 00 | | \...`...
+0x0040 | 00 00 64 00 3A 00 00 00 | | ..d.:...
+0x0048 | 00 00 00 01 02 02 01 01 | | ........
+0x0050 | D2 04 00 00 28 02 00 00 | | ....(...
+0x0058 | 01 00 00 00 02 00 00 00 | | ........
+0x0060 | 0C 00 00 00 0A 00 00 00 | | ........
+0x0068 | 0C 00 00 00 14 00 00 00 | | ........
+0x0070 | 01 02 03 00 C8 01 00 00 | | ........
+0x0078 | 5C 01 00 00 50 01 00 00 | | \...P...
+0x0080 | 34 01 00 00 24 01 00 00 | | 4...$...
+0x0088 | 14 01 00 00 0D 00 00 00 | | ........
+0x0090 | DC 00 00 00 A0 00 00 00 | | ........
+0x0098 | 94 00 00 00 38 00 00 00 | | ....8...
+0x00A0 | 33 00 00 00 1C 00 00 00 | | 3.......
+0x00A8 | 04 00 00 00 05 00 00 00 | | ........
+0x00B0 | 61 6C 69 63 65 00 00 00 | | alice...
+0x00B8 | 08 00 13 00 08 00 04 00 | | ........
+0x00C0 | 08 00 00 00 00 80 23 44 | | ......#D
+0x00C8 | 00 00 00 00 00 10 74 40 | | ......t@
+0x00D0 | 00 00 00 05 03 00 00 00 | | ........
+0x00D8 | 34 00 00 00 2C 00 00 00 | | 4...,...
+0x00E0 | 04 00 00 00 D2 FE FF FF | | ........
+0x00E8 | 00 80 23 44 10 00 00 00 | | ..#D....
+0x00F0 | 00 00 00 00 00 D8 8E 40 | | .......@
+0x00F8 | 00 00 00 00 6A FE FF FF | | ....j...
+0x0100 | 00 00 00 03 04 00 04 00 | | ........
+0x0108 | 04 00 00 00 FA FE FF FF | | ........
+0x0110 | 00 00 E4 43 10 00 00 00 | | ...C....
+0x0118 | 00 00 00 00 00 C0 5E 40 | | ......^@
+0x0120 | 00 00 00 00 92 FE FF FF | | ........
+0x0128 | 00 00 00 01 03 00 00 00 | | ........
+0x0130 | 01 02 01 00 03 00 00 00 | | ........
+0x0138 | 33 33 33 33 33 A3 45 40 | | 33333.E@
+0x0140 | 7E 57 04 FF 5B 87 53 C0 | | ~W..[.S.
+0x0148 | 8D F0 F6 20 04 B6 42 40 | | ... ..B@
+0x0150 | 9F 77 63 41 61 85 5E C0 | | .wcAa.^.
+0x0158 | 8F 35 23 83 DC 35 4B C0 | | .5#..5K.
+0x0160 | F6 97 DD 93 87 C5 0A 40 | | .......@
+0x0168 | 00 00 00 00 03 00 00 00 | | ........
+0x0170 | 20 00 00 00 14 00 00 00 | | .......
+0x0178 | 04 00 00 00 07 00 00 00 | | ........
+0x0180 | 63 68 61 72 6C 69 65 00 | | charlie.
+0x0188 | 03 00 00 00 62 6F 62 00 | | ....bob.
+0x0190 | 05 00 00 00 61 6C 69 63 | | ....alic
+0x0198 | 65 00 00 00 07 00 00 00 | | e.......
+0x01A0 | 63 68 61 72 6C 69 65 00 | | charlie.
+0x01A8 | 07 00 00 00 63 68 61 72 | | ....char
+0x01B0 | 6C 69 65 00 09 00 00 00 | | lie.....
+0x01B8 | 09 00 08 00 07 00 01 00 | | ........
+0x01C0 | 02 00 03 00 06 00 05 00 | | ........
+0x01C8 | 04 00 00 00 3A FF FF FF | | ....:...
+0x01D0 | 00 00 00 03 02 00 00 00 | | ........
+0x01D8 | 44 00 00 00 10 00 00 00 | | D.......
+0x01E0 | 00 00 0A 00 1A 00 0C 00 | | ........
+0x01E8 | 04 00 08 00 0A 00 00 00 | | ........
+0x01F0 | 00 80 23 44 18 00 00 00 | | ..#D....
+0x01F8 | 00 00 00 00 00 D8 8E 40 | | .......@
+0x0200 | 00 00 00 00 00 00 06 00 | | ........
+0x0208 | 06 00 05 00 06 00 00 00 | | ........
+0x0210 | 00 03 0A 00 18 00 0C 00 | | ........
+0x0218 | 04 00 08 00 0A 00 00 00 | | ........
+0x0220 | 00 00 E4 43 10 00 00 00 | | ...C....
+0x0228 | 00 00 00 00 00 C0 5E 40 | | ......^@
+0x0230 | 00 00 00 00 A2 FF FF FF | | ........
+0x0238 | 00 00 00 01 2F 00 00 00 | | ..../...
+0x0240 | 54 68 69 73 20 69 73 20 | | This is
+0x0248 | 61 20 6C 6F 6E 67 20 73 | | a long s
+0x0250 | 74 72 69 6E 67 20 74 6F | | tring to
+0x0258 | 20 73 68 6F 77 20 68 6F | | show ho
+0x0260 | 77 20 69 74 20 62 72 65 | | w it bre
+0x0268 | 61 6B 73 20 75 70 2E 00 | | aks up..
+0x0270 | 00 00 0A 00 16 00 0C 00 | | ........
+0x0278 | 04 00 08 00 0A 00 00 00 | | ........
+0x0280 | 65 20 71 49 14 00 00 00 | | e qI....
+0x0288 | C9 76 BE 9F 0C 24 FE 40 | | .v...$.@
+0x0290 | 00 00 06 00 08 00 07 00 | | ........
+0x0298 | 06 00 00 00 00 00 00 01 | | ........

Binary file not shown.

View File

@@ -0,0 +1,21 @@
// Annotated Flatbuffer Binary
//
// Schema file: annotated_binary.fbs
// Binary file: tests/invalid_root_table_too_short.bin
header:
+0x00 | 44 00 00 00 | UOffset32 | 0x00000044 (68) Loc: +0x44 | offset to root table `AnnotatedBinary.Foo`
+0x04 | 41 4E 4E 4F | char[4] | ANNO | File Identifier
unknown (no known references):
+0x08 | 00 00 3A 00 68 00 0C 00 | ?uint8_t[60] | ..:.h... | WARN: nothing refers to this section.
+0x10 | 07 00 00 00 08 00 10 00 | | ........
+0x18 | 14 00 30 00 34 00 09 00 | | ..0.4...
+0x20 | 38 00 3C 00 40 00 44 00 | | 8.<.@.D.
+0x28 | 00 00 00 00 48 00 4C 00 | | ....H.L.
+0x30 | 50 00 54 00 58 00 0A 00 | | P.T.X...
+0x38 | 5C 00 0B 00 60 00 00 00 | | \...`...
+0x40 | 00 00 64 00 | | ..d.
root_table (AnnotatedBinary.Foo):
+0x44 | 3A 00 | ?uint8_t[2] | :. | ERROR: offset to vtable. Incomplete binary, expected to read 4 bytes here

View File

@@ -0,0 +1,98 @@
// Annotated Flatbuffer Binary
//
// Schema file: annotated_binary.fbs
// Binary file: tests/invalid_root_table_vtable_offset.bin
header:
+0x0000 | 44 00 00 00 | UOffset32 | 0x00000044 (68) Loc: +0x0044 | offset to root table `AnnotatedBinary.Foo`
+0x0004 | 41 4E 4E 4F | char[4] | ANNO | File Identifier
unknown (no known references):
+0x0008 | 00 00 3A 00 68 00 0C 00 | ?uint8_t[60] | ..:.h... | WARN: nothing refers to this section.
+0x0010 | 07 00 00 00 08 00 10 00 | | ........
+0x0018 | 14 00 30 00 34 00 09 00 | | ..0.4...
+0x0020 | 38 00 3C 00 40 00 44 00 | | 8.<.@.D.
+0x0028 | 00 00 00 00 48 00 4C 00 | | ....H.L.
+0x0030 | 50 00 54 00 58 00 0A 00 | | P.T.X...
+0x0038 | 5C 00 0B 00 60 00 00 00 | | \...`...
+0x0040 | 00 00 64 00 | | ..d.
root_table (AnnotatedBinary.Foo):
+0x0044 | FF FF 00 00 | SOffset32 | 0x0000FFFF (65535) Loc: +0xFFFFFFFFFFFF0045 | ERROR: offset to vtable. Invalid offset, points to outside the binary.
unknown (no known references):
+0x0048 | 00 00 00 01 02 02 01 01 | ?uint8_t[600] | ........ | WARN: nothing refers to this section.
+0x0050 | D2 04 00 00 28 02 00 00 | | ....(...
+0x0058 | 01 00 00 00 02 00 00 00 | | ........
+0x0060 | 0C 00 00 00 0A 00 00 00 | | ........
+0x0068 | 0C 00 00 00 14 00 00 00 | | ........
+0x0070 | 01 02 03 00 C8 01 00 00 | | ........
+0x0078 | 5C 01 00 00 50 01 00 00 | | \...P...
+0x0080 | 34 01 00 00 24 01 00 00 | | 4...$...
+0x0088 | 14 01 00 00 0D 00 00 00 | | ........
+0x0090 | DC 00 00 00 A0 00 00 00 | | ........
+0x0098 | 94 00 00 00 38 00 00 00 | | ....8...
+0x00A0 | 33 00 00 00 1C 00 00 00 | | 3.......
+0x00A8 | 04 00 00 00 05 00 00 00 | | ........
+0x00B0 | 61 6C 69 63 65 00 00 00 | | alice...
+0x00B8 | 08 00 13 00 08 00 04 00 | | ........
+0x00C0 | 08 00 00 00 00 80 23 44 | | ......#D
+0x00C8 | 00 00 00 00 00 10 74 40 | | ......t@
+0x00D0 | 00 00 00 05 03 00 00 00 | | ........
+0x00D8 | 34 00 00 00 2C 00 00 00 | | 4...,...
+0x00E0 | 04 00 00 00 D2 FE FF FF | | ........
+0x00E8 | 00 80 23 44 10 00 00 00 | | ..#D....
+0x00F0 | 00 00 00 00 00 D8 8E 40 | | .......@
+0x00F8 | 00 00 00 00 6A FE FF FF | | ....j...
+0x0100 | 00 00 00 03 04 00 04 00 | | ........
+0x0108 | 04 00 00 00 FA FE FF FF | | ........
+0x0110 | 00 00 E4 43 10 00 00 00 | | ...C....
+0x0118 | 00 00 00 00 00 C0 5E 40 | | ......^@
+0x0120 | 00 00 00 00 92 FE FF FF | | ........
+0x0128 | 00 00 00 01 03 00 00 00 | | ........
+0x0130 | 01 02 01 00 03 00 00 00 | | ........
+0x0138 | 33 33 33 33 33 A3 45 40 | | 33333.E@
+0x0140 | 7E 57 04 FF 5B 87 53 C0 | | ~W..[.S.
+0x0148 | 8D F0 F6 20 04 B6 42 40 | | ... ..B@
+0x0150 | 9F 77 63 41 61 85 5E C0 | | .wcAa.^.
+0x0158 | 8F 35 23 83 DC 35 4B C0 | | .5#..5K.
+0x0160 | F6 97 DD 93 87 C5 0A 40 | | .......@
+0x0168 | 00 00 00 00 03 00 00 00 | | ........
+0x0170 | 20 00 00 00 14 00 00 00 | | .......
+0x0178 | 04 00 00 00 07 00 00 00 | | ........
+0x0180 | 63 68 61 72 6C 69 65 00 | | charlie.
+0x0188 | 03 00 00 00 62 6F 62 00 | | ....bob.
+0x0190 | 05 00 00 00 61 6C 69 63 | | ....alic
+0x0198 | 65 00 00 00 07 00 00 00 | | e.......
+0x01A0 | 63 68 61 72 6C 69 65 00 | | charlie.
+0x01A8 | 07 00 00 00 63 68 61 72 | | ....char
+0x01B0 | 6C 69 65 00 09 00 00 00 | | lie.....
+0x01B8 | 09 00 08 00 07 00 01 00 | | ........
+0x01C0 | 02 00 03 00 06 00 05 00 | | ........
+0x01C8 | 04 00 00 00 3A FF FF FF | | ....:...
+0x01D0 | 00 00 00 03 02 00 00 00 | | ........
+0x01D8 | 44 00 00 00 10 00 00 00 | | D.......
+0x01E0 | 00 00 0A 00 1A 00 0C 00 | | ........
+0x01E8 | 04 00 08 00 0A 00 00 00 | | ........
+0x01F0 | 00 80 23 44 18 00 00 00 | | ..#D....
+0x01F8 | 00 00 00 00 00 D8 8E 40 | | .......@
+0x0200 | 00 00 00 00 00 00 06 00 | | ........
+0x0208 | 06 00 05 00 06 00 00 00 | | ........
+0x0210 | 00 03 0A 00 18 00 0C 00 | | ........
+0x0218 | 04 00 08 00 0A 00 00 00 | | ........
+0x0220 | 00 00 E4 43 10 00 00 00 | | ...C....
+0x0228 | 00 00 00 00 00 C0 5E 40 | | ......^@
+0x0230 | 00 00 00 00 A2 FF FF FF | | ........
+0x0238 | 00 00 00 01 2F 00 00 00 | | ..../...
+0x0240 | 54 68 69 73 20 69 73 20 | | This is
+0x0248 | 61 20 6C 6F 6E 67 20 73 | | a long s
+0x0250 | 74 72 69 6E 67 20 74 6F | | tring to
+0x0258 | 20 73 68 6F 77 20 68 6F | | show ho
+0x0260 | 77 20 69 74 20 62 72 65 | | w it bre
+0x0268 | 61 6B 73 20 75 70 2E 00 | | aks up..
+0x0270 | 00 00 0A 00 16 00 0C 00 | | ........
+0x0278 | 04 00 08 00 0A 00 00 00 | | ........
+0x0280 | 65 20 71 49 14 00 00 00 | | e qI....
+0x0288 | C9 76 BE 9F 0C 24 FE 40 | | .v...$.@
+0x0290 | 00 00 06 00 08 00 07 00 | | ........
+0x0298 | 06 00 00 00 00 00 00 01 | | ........

View File

@@ -0,0 +1,295 @@
// Annotated Flatbuffer Binary
//
// Schema file: annotated_binary.fbs
// Binary file: tests/invalid_string_length.bin
header:
+0x0000 | 44 00 00 00 | UOffset32 | 0x00000044 (68) Loc: +0x0044 | offset to root table `AnnotatedBinary.Foo`
+0x0004 | 41 4E 4E 4F | char[4] | ANNO | File Identifier
padding:
+0x0008 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Foo):
+0x000A | 3A 00 | uint16_t | 0x003A (58) | size of this vtable
+0x000C | 68 00 | uint16_t | 0x0068 (104) | size of referring table
+0x000E | 0C 00 | VOffset16 | 0x000C (12) | offset to field `counter` (id: 0)
+0x0010 | 07 00 | VOffset16 | 0x0007 (7) | offset to field `healthy` (id: 1)
+0x0012 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `level` (id: 2) <defaults to 99> (Long)
+0x0014 | 08 00 | VOffset16 | 0x0008 (8) | offset to field `meal` (id: 3)
+0x0016 | 10 00 | VOffset16 | 0x0010 (16) | offset to field `bar` (id: 4)
+0x0018 | 14 00 | VOffset16 | 0x0014 (20) | offset to field `home` (id: 5)
+0x001A | 30 00 | VOffset16 | 0x0030 (48) | offset to field `name` (id: 6)
+0x001C | 34 00 | VOffset16 | 0x0034 (52) | offset to field `bars` (id: 7)
+0x001E | 09 00 | VOffset16 | 0x0009 (9) | offset to field `bar_baz_type` (id: 8)
+0x0020 | 38 00 | VOffset16 | 0x0038 (56) | offset to field `bar_baz` (id: 9)
+0x0022 | 3C 00 | VOffset16 | 0x003C (60) | offset to field `accounts` (id: 10)
+0x0024 | 40 00 | VOffset16 | 0x0040 (64) | offset to field `bob` (id: 11)
+0x0026 | 44 00 | VOffset16 | 0x0044 (68) | offset to field `alice` (id: 12)
+0x0028 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `maybe_i32` (id: 13) <defaults to 0> (Int)
+0x002A | 00 00 | VOffset16 | 0x0000 (0) | offset to field `default_i32` (id: 14) <defaults to 42> (Int)
+0x002C | 48 00 | VOffset16 | 0x0048 (72) | offset to field `just_i32` (id: 15)
+0x002E | 4C 00 | VOffset16 | 0x004C (76) | offset to field `names` (id: 16)
+0x0030 | 50 00 | VOffset16 | 0x0050 (80) | offset to field `points_of_interest` (id: 17)
+0x0032 | 54 00 | VOffset16 | 0x0054 (84) | offset to field `foobars_type` (id: 18)
+0x0034 | 58 00 | VOffset16 | 0x0058 (88) | offset to field `foobars` (id: 19)
+0x0036 | 0A 00 | VOffset16 | 0x000A (10) | offset to field `measurement_type` (id: 20)
+0x0038 | 5C 00 | VOffset16 | 0x005C (92) | offset to field `measurement` (id: 21)
+0x003A | 0B 00 | VOffset16 | 0x000B (11) | offset to field `anything_type` (id: 22)
+0x003C | 60 00 | VOffset16 | 0x0060 (96) | offset to field `anything` (id: 23)
+0x003E | 00 00 | VOffset16 | 0x0000 (0) | offset to field `temperature` (id: 24) <defaults to 98.600000> (Float)
+0x0040 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `teetotaler` (id: 25) <null> (Obj)
+0x0042 | 64 00 | VOffset16 | 0x0064 (100) | offset to field `charlie` (id: 26)
root_table (AnnotatedBinary.Foo):
+0x0044 | 3A 00 00 00 | SOffset32 | 0x0000003A (58) Loc: +0x000A | offset to vtable
+0x0048 | 00 00 00 | uint8_t[3] | ... | padding
+0x004B | 01 | uint8_t | 0x01 (1) | table field `healthy` (Bool)
+0x004C | 02 | uint8_t | 0x02 (2) | table field `meal` (Byte)
+0x004D | 02 | UType8 | 0x02 (2) | table field `bar_baz_type` (UType)
+0x004E | 01 | UType8 | 0x01 (1) | table field `measurement_type` (UType)
+0x004F | 01 | UType8 | 0x01 (1) | table field `anything_type` (UType)
+0x0050 | D2 04 00 00 | uint32_t | 0x000004D2 (1234) | table field `counter` (Int)
+0x0054 | 28 02 00 00 | UOffset32 | 0x00000228 (552) Loc: +0x027C | offset to field `bar` (table)
+0x0058 | 01 00 00 00 | uint32_t | 0x00000001 (1) | struct field `AnnotatedBinary.Building.floors` (Int)
+0x005C | 02 00 00 00 | uint32_t | 0x00000002 (2) | struct field `AnnotatedBinary.Building.doors` (Int)
+0x0060 | 0C 00 00 00 | uint32_t | 0x0000000C (12) | struct field `AnnotatedBinary.Building.windows` (Int)
+0x0064 | 0A 00 00 00 | uint32_t | 0x0000000A (10) | array field `AnnotatedBinary.Dimension.values[0]` (Int)
+0x0068 | 0C 00 00 00 | uint32_t | 0x0000000C (12) | array field `AnnotatedBinary.Dimension.values[1]` (Int)
+0x006C | 14 00 00 00 | uint32_t | 0x00000014 (20) | array field `AnnotatedBinary.Dimension.values[2]` (Int)
+0x0070 | 01 | uint8_t | 0x01 (1) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
+0x0071 | 02 | uint8_t | 0x02 (2) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
+0x0072 | 03 | uint8_t | 0x03 (3) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
+0x0073 | 00 | uint8_t[1] | . | padding
+0x0074 | C8 01 00 00 | UOffset32 | 0x000001C8 (456) Loc: +0x023C | offset to field `name` (string)
+0x0078 | 5C 01 00 00 | UOffset32 | 0x0000015C (348) Loc: +0x01D4 | offset to field `bars` (vector)
+0x007C | 50 01 00 00 | UOffset32 | 0x00000150 (336) Loc: +0x01CC | offset to field `bar_baz` (union of type `Baz`)
+0x0080 | 34 01 00 00 | UOffset32 | 0x00000134 (308) Loc: +0x01B4 | offset to field `accounts` (vector)
+0x0084 | 24 01 00 00 | UOffset32 | 0x00000124 (292) Loc: +0x01A8 | offset to field `bob` (string)
+0x0088 | 14 01 00 00 | UOffset32 | 0x00000114 (276) Loc: +0x019C | offset to field `alice` (string)
+0x008C | 0D 00 00 00 | uint32_t | 0x0000000D (13) | table field `just_i32` (Int)
+0x0090 | DC 00 00 00 | UOffset32 | 0x000000DC (220) Loc: +0x016C | offset to field `names` (vector)
+0x0094 | A0 00 00 00 | UOffset32 | 0x000000A0 (160) Loc: +0x0134 | offset to field `points_of_interest` (vector)
+0x0098 | 94 00 00 00 | UOffset32 | 0x00000094 (148) Loc: +0x012C | offset to field `foobars_type` (vector)
+0x009C | 38 00 00 00 | UOffset32 | 0x00000038 (56) Loc: +0x00D4 | offset to field `foobars` (vector)
+0x00A0 | 33 00 00 00 | UOffset32 | 0x00000033 (51) Loc: +0x00D3 | offset to field `measurement` (union of type `Tolerance`)
+0x00A4 | 1C 00 00 00 | UOffset32 | 0x0000001C (28) Loc: +0x00C0 | offset to field `anything` (union of type `Bar`)
+0x00A8 | 04 00 00 00 | UOffset32 | 0x00000004 (4) Loc: +0x00AC | offset to field `charlie` (string)
string (AnnotatedBinary.Foo.charlie):
+0x00AC | FF FF 00 00 | uint32_t | 0x0000FFFF (65535) | ERROR: length of string. Length is longer than the binary.
unknown (no known references):
+0x00B0 | 61 6C 69 63 65 00 00 00 | ?uint8_t[8] | alice... | WARN: nothing refers to this section.
vtable (AnnotatedBinary.Bar):
+0x00B8 | 08 00 | uint16_t | 0x0008 (8) | size of this vtable
+0x00BA | 13 00 | uint16_t | 0x0013 (19) | size of referring table
+0x00BC | 08 00 | VOffset16 | 0x0008 (8) | offset to field `a` (id: 0)
+0x00BE | 04 00 | VOffset16 | 0x0004 (4) | offset to field `b` (id: 1)
table (AnnotatedBinary.Bar):
+0x00C0 | 08 00 00 00 | SOffset32 | 0x00000008 (8) Loc: +0x00B8 | offset to vtable
+0x00C4 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float)
+0x00C8 | 00 00 00 00 00 10 74 40 | double | 0x4074100000000000 (321.000000) | table field `a` (Double)
+0x00D0 | 00 00 00 | uint8_t[3] | ... | padding
union (AnnotatedBinary.Tolerance.measurement):
+0x00D3 | 05 | uint8_t | 0x05 (5) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
vector (AnnotatedBinary.Foo.foobars):
+0x00D4 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x00D8 | 34 00 00 00 | UOffset32 | 0x00000034 (52) Loc: +0x010C | offset to union[0] (`Bar`)
+0x00DC | 2C 00 00 00 | UOffset32 | 0x0000002C (44) Loc: +0x0108 | offset to union[1] (`Baz`)
+0x00E0 | 04 00 00 00 | UOffset32 | 0x00000004 (4) Loc: +0x00E4 | offset to union[2] (`Bar`)
table (AnnotatedBinary.Bar):
+0x00E4 | D2 FE FF FF | SOffset32 | 0xFFFFFED2 (-302) Loc: +0x0212 | offset to vtable
+0x00E8 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float)
+0x00EC | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x00FC | offset to field `c` (table)
+0x00F0 | 00 00 00 00 00 D8 8E 40 | double | 0x408ED80000000000 (987.000000) | table field `a` (Double)
+0x00F8 | 00 00 00 00 | uint8_t[4] | .... | padding
table (AnnotatedBinary.Baz):
+0x00FC | 6A FE FF FF | SOffset32 | 0xFFFFFE6A (-406) Loc: +0x0292 | offset to vtable
+0x0100 | 00 00 00 | uint8_t[3] | ... | padding
+0x0103 | 03 | uint8_t | 0x03 (3) | table field `meal` (Byte)
vtable (AnnotatedBinary.Baz):
+0x0104 | 04 00 | uint16_t | 0x0004 (4) | size of this vtable
+0x0106 | 04 00 | uint16_t | 0x0004 (4) | size of referring table
table (AnnotatedBinary.Baz):
+0x0108 | 04 00 00 00 | SOffset32 | 0x00000004 (4) Loc: +0x0104 | offset to vtable
table (AnnotatedBinary.Bar):
+0x010C | FA FE FF FF | SOffset32 | 0xFFFFFEFA (-262) Loc: +0x0212 | offset to vtable
+0x0110 | 00 00 E4 43 | float | 0x43E40000 (456.000000) | table field `b` (Float)
+0x0114 | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x0124 | offset to field `c` (table)
+0x0118 | 00 00 00 00 00 C0 5E 40 | double | 0x405EC00000000000 (123.000000) | table field `a` (Double)
+0x0120 | 00 00 00 00 | uint8_t[4] | .... | padding
table (AnnotatedBinary.Baz):
+0x0124 | 92 FE FF FF | SOffset32 | 0xFFFFFE92 (-366) Loc: +0x0292 | offset to vtable
+0x0128 | 00 00 00 | uint8_t[3] | ... | padding
+0x012B | 01 | uint8_t | 0x01 (1) | table field `meal` (Byte)
vector (AnnotatedBinary.Foo.foobars_type):
+0x012C | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x0130 | 01 | UType8 | 0x01 (1) | value[0]
+0x0131 | 02 | UType8 | 0x02 (2) | value[1]
+0x0132 | 01 | UType8 | 0x01 (1) | value[2]
vector (AnnotatedBinary.Foo.points_of_interest):
+0x0134 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x0138 | 33 33 33 33 33 A3 45 40 | double | 0x4045A33333333333 (43.275000) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0140 | 7E 57 04 FF 5B 87 53 C0 | double | 0xC053875BFF04577E (-78.114990) | struct field `AnnotatedBinary.Location.longitude` (Double)
+0x0148 | 8D F0 F6 20 04 B6 42 40 | double | 0x4042B60420F6F08D (37.422001) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0150 | 9F 77 63 41 61 85 5E C0 | double | 0xC05E85614163779F (-122.084061) | struct field `AnnotatedBinary.Location.longitude` (Double)
+0x0158 | 8F 35 23 83 DC 35 4B C0 | double | 0xC04B35DC8323358F (-54.420792) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0160 | F6 97 DD 93 87 C5 0A 40 | double | 0x400AC58793DD97F6 (3.346450) | struct field `AnnotatedBinary.Location.longitude` (Double)
padding:
+0x0168 | 00 00 00 00 | uint8_t[4] | .... | padding
vector (AnnotatedBinary.Foo.names):
+0x016C | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x0170 | 20 00 00 00 | UOffset32 | 0x00000020 (32) Loc: +0x0190 | offset to string[0]
+0x0174 | 14 00 00 00 | UOffset32 | 0x00000014 (20) Loc: +0x0188 | offset to string[1]
+0x0178 | 04 00 00 00 | UOffset32 | 0x00000004 (4) Loc: +0x017C | offset to string[2]
string (AnnotatedBinary.Foo.names):
+0x017C | 07 00 00 00 | uint32_t | 0x00000007 (7) | length of string
+0x0180 | 63 68 61 72 6C 69 65 | char[7] | charlie
+0x0187 | 00 | char | 0x00 (0) | string terminator
string (AnnotatedBinary.Foo.names):
+0x0188 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of string
+0x018C | 62 6F 62 | char[3] | bob
+0x018F | 00 | char | 0x00 (0) | string terminator
string (AnnotatedBinary.Foo.names):
+0x0190 | 05 00 00 00 | uint32_t | 0x00000005 (5) | length of string
+0x0194 | 61 6C 69 63 65 | char[5] | alice
+0x0199 | 00 | char | 0x00 (0) | string terminator
padding:
+0x019A | 00 00 | uint8_t[2] | .. | padding
string (AnnotatedBinary.Foo.alice):
+0x019C | 07 00 00 00 | uint32_t | 0x00000007 (7) | length of string
+0x01A0 | 63 68 61 72 6C 69 65 | char[7] | charlie
+0x01A7 | 00 | char | 0x00 (0) | string terminator
string (AnnotatedBinary.Foo.bob):
+0x01A8 | 07 00 00 00 | uint32_t | 0x00000007 (7) | length of string
+0x01AC | 63 68 61 72 6C 69 65 | char[7] | charlie
+0x01B3 | 00 | char | 0x00 (0) | string terminator
vector (AnnotatedBinary.Foo.accounts):
+0x01B4 | 09 00 00 00 | uint32_t | 0x00000009 (9) | length of vector (# items)
+0x01B8 | 09 00 | uint16_t | 0x0009 (9) | value[0]
+0x01BA | 08 00 | uint16_t | 0x0008 (8) | value[1]
+0x01BC | 07 00 | uint16_t | 0x0007 (7) | value[2]
+0x01BE | 01 00 | uint16_t | 0x0001 (1) | value[3]
+0x01C0 | 02 00 | uint16_t | 0x0002 (2) | value[4]
+0x01C2 | 03 00 | uint16_t | 0x0003 (3) | value[5]
+0x01C4 | 06 00 | uint16_t | 0x0006 (6) | value[6]
+0x01C6 | 05 00 | uint16_t | 0x0005 (5) | value[7]
+0x01C8 | 04 00 | uint16_t | 0x0004 (4) | value[8]
padding:
+0x01CA | 00 00 | uint8_t[2] | .. | padding
table (AnnotatedBinary.Baz):
+0x01CC | 3A FF FF FF | SOffset32 | 0xFFFFFF3A (-198) Loc: +0x0292 | offset to vtable
+0x01D0 | 00 00 00 | uint8_t[3] | ... | padding
+0x01D3 | 03 | uint8_t | 0x03 (3) | table field `meal` (Byte)
vector (AnnotatedBinary.Foo.bars):
+0x01D4 | 02 00 00 00 | uint32_t | 0x00000002 (2) | length of vector (# items)
+0x01D8 | 44 00 00 00 | UOffset32 | 0x00000044 (68) Loc: +0x021C | offset to table[0]
+0x01DC | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x01EC | offset to table[1]
padding:
+0x01E0 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Bar):
+0x01E2 | 0A 00 | uint16_t | 0x000A (10) | size of this vtable
+0x01E4 | 1A 00 | uint16_t | 0x001A (26) | size of referring table
+0x01E6 | 0C 00 | VOffset16 | 0x000C (12) | offset to field `a` (id: 0)
+0x01E8 | 04 00 | VOffset16 | 0x0004 (4) | offset to field `b` (id: 1)
+0x01EA | 08 00 | VOffset16 | 0x0008 (8) | offset to field `c` (id: 2)
table (AnnotatedBinary.Bar):
+0x01EC | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x01E2 | offset to vtable
+0x01F0 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float)
+0x01F4 | 18 00 00 00 | UOffset32 | 0x00000018 (24) Loc: +0x020C | offset to field `c` (table)
+0x01F8 | 00 00 00 00 00 D8 8E 40 | double | 0x408ED80000000000 (987.000000) | table field `a` (Double)
+0x0200 | 00 00 00 00 00 00 | uint8_t[6] | ...... | padding
vtable (AnnotatedBinary.Baz):
+0x0206 | 06 00 | uint16_t | 0x0006 (6) | size of this vtable
+0x0208 | 06 00 | uint16_t | 0x0006 (6) | size of referring table
+0x020A | 05 00 | VOffset16 | 0x0005 (5) | offset to field `meal` (id: 0)
table (AnnotatedBinary.Baz):
+0x020C | 06 00 00 00 | SOffset32 | 0x00000006 (6) Loc: +0x0206 | offset to vtable
+0x0210 | 00 | uint8_t[1] | . | padding
+0x0211 | 03 | uint8_t | 0x03 (3) | table field `meal` (Byte)
vtable (AnnotatedBinary.Bar):
+0x0212 | 0A 00 | uint16_t | 0x000A (10) | size of this vtable
+0x0214 | 18 00 | uint16_t | 0x0018 (24) | size of referring table
+0x0216 | 0C 00 | VOffset16 | 0x000C (12) | offset to field `a` (id: 0)
+0x0218 | 04 00 | VOffset16 | 0x0004 (4) | offset to field `b` (id: 1)
+0x021A | 08 00 | VOffset16 | 0x0008 (8) | offset to field `c` (id: 2)
table (AnnotatedBinary.Bar):
+0x021C | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x0212 | offset to vtable
+0x0220 | 00 00 E4 43 | float | 0x43E40000 (456.000000) | table field `b` (Float)
+0x0224 | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x0234 | offset to field `c` (table)
+0x0228 | 00 00 00 00 00 C0 5E 40 | double | 0x405EC00000000000 (123.000000) | table field `a` (Double)
+0x0230 | 00 00 00 00 | uint8_t[4] | .... | padding
table (AnnotatedBinary.Baz):
+0x0234 | A2 FF FF FF | SOffset32 | 0xFFFFFFA2 (-94) Loc: +0x0292 | offset to vtable
+0x0238 | 00 00 00 | uint8_t[3] | ... | padding
+0x023B | 01 | uint8_t | 0x01 (1) | table field `meal` (Byte)
string (AnnotatedBinary.Foo.name):
+0x023C | 2F 00 00 00 | uint32_t | 0x0000002F (47) | length of string
+0x0240 | 54 68 69 73 20 69 73 20 | char[47] | This is
+0x0248 | 61 20 6C 6F 6E 67 20 73 | | a long s
+0x0250 | 74 72 69 6E 67 20 74 6F | | tring to
+0x0258 | 20 73 68 6F 77 20 68 6F | | show ho
+0x0260 | 77 20 69 74 20 62 72 65 | | w it bre
+0x0268 | 61 6B 73 20 75 70 2E | | aks up.
+0x026F | 00 | char | 0x00 (0) | string terminator
padding:
+0x0270 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Bar):
+0x0272 | 0A 00 | uint16_t | 0x000A (10) | size of this vtable
+0x0274 | 16 00 | uint16_t | 0x0016 (22) | size of referring table
+0x0276 | 0C 00 | VOffset16 | 0x000C (12) | offset to field `a` (id: 0)
+0x0278 | 04 00 | VOffset16 | 0x0004 (4) | offset to field `b` (id: 1)
+0x027A | 08 00 | VOffset16 | 0x0008 (8) | offset to field `c` (id: 2)
table (AnnotatedBinary.Bar):
+0x027C | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x0272 | offset to vtable
+0x0280 | 65 20 71 49 | float | 0x49712065 (987654.312500) | table field `b` (Float)
+0x0284 | 14 00 00 00 | UOffset32 | 0x00000014 (20) Loc: +0x0298 | offset to field `c` (table)
+0x0288 | C9 76 BE 9F 0C 24 FE 40 | double | 0x40FE240C9FBE76C9 (123456.789000) | table field `a` (Double)
+0x0290 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Baz):
+0x0292 | 06 00 | uint16_t | 0x0006 (6) | size of this vtable
+0x0294 | 08 00 | uint16_t | 0x0008 (8) | size of referring table
+0x0296 | 07 00 | VOffset16 | 0x0007 (7) | offset to field `meal` (id: 0)
table (AnnotatedBinary.Baz):
+0x0298 | 06 00 00 00 | SOffset32 | 0x00000006 (6) Loc: +0x0292 | offset to vtable
+0x029C | 00 00 00 | uint8_t[3] | ... | padding
+0x029F | 01 | uint8_t | 0x01 (1) | table field `meal` (Byte)

Binary file not shown.

View File

@@ -0,0 +1,80 @@
// Annotated Flatbuffer Binary
//
// Schema file: annotated_binary.fbs
// Binary file: tests/invalid_string_length_cut_short.bin
header:
+0x00 | 44 00 00 00 | UOffset32 | 0x00000044 (68) Loc: +0x44 | offset to root table `AnnotatedBinary.Foo`
+0x04 | 41 4E 4E 4F | char[4] | ANNO | File Identifier
padding:
+0x08 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Foo):
+0x0A | 3A 00 | uint16_t | 0x003A (58) | size of this vtable
+0x0C | 68 00 | uint16_t | 0x0068 (104) | size of referring table
+0x0E | 0C 00 | VOffset16 | 0x000C (12) | offset to field `counter` (id: 0)
+0x10 | 07 00 | VOffset16 | 0x0007 (7) | offset to field `healthy` (id: 1)
+0x12 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `level` (id: 2) <defaults to 99> (Long)
+0x14 | 08 00 | VOffset16 | 0x0008 (8) | offset to field `meal` (id: 3)
+0x16 | 10 00 | VOffset16 | 0x0010 (16) | offset to field `bar` (id: 4)
+0x18 | 14 00 | VOffset16 | 0x0014 (20) | offset to field `home` (id: 5)
+0x1A | 30 00 | VOffset16 | 0x0030 (48) | offset to field `name` (id: 6)
+0x1C | 34 00 | VOffset16 | 0x0034 (52) | offset to field `bars` (id: 7)
+0x1E | 09 00 | VOffset16 | 0x0009 (9) | offset to field `bar_baz_type` (id: 8)
+0x20 | 38 00 | VOffset16 | 0x0038 (56) | offset to field `bar_baz` (id: 9)
+0x22 | 3C 00 | VOffset16 | 0x003C (60) | offset to field `accounts` (id: 10)
+0x24 | 40 00 | VOffset16 | 0x0040 (64) | offset to field `bob` (id: 11)
+0x26 | 44 00 | VOffset16 | 0x0044 (68) | offset to field `alice` (id: 12)
+0x28 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `maybe_i32` (id: 13) <defaults to 0> (Int)
+0x2A | 00 00 | VOffset16 | 0x0000 (0) | offset to field `default_i32` (id: 14) <defaults to 42> (Int)
+0x2C | 48 00 | VOffset16 | 0x0048 (72) | offset to field `just_i32` (id: 15)
+0x2E | 4C 00 | VOffset16 | 0x004C (76) | offset to field `names` (id: 16)
+0x30 | 50 00 | VOffset16 | 0x0050 (80) | offset to field `points_of_interest` (id: 17)
+0x32 | 54 00 | VOffset16 | 0x0054 (84) | offset to field `foobars_type` (id: 18)
+0x34 | 58 00 | VOffset16 | 0x0058 (88) | offset to field `foobars` (id: 19)
+0x36 | 0A 00 | VOffset16 | 0x000A (10) | offset to field `measurement_type` (id: 20)
+0x38 | 5C 00 | VOffset16 | 0x005C (92) | offset to field `measurement` (id: 21)
+0x3A | 0B 00 | VOffset16 | 0x000B (11) | offset to field `anything_type` (id: 22)
+0x3C | 60 00 | VOffset16 | 0x0060 (96) | offset to field `anything` (id: 23)
+0x3E | 00 00 | VOffset16 | 0x0000 (0) | offset to field `temperature` (id: 24) <defaults to 98.600000> (Float)
+0x40 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `teetotaler` (id: 25) <null> (Obj)
+0x42 | 64 00 | VOffset16 | 0x0064 (100) | offset to field `charlie` (id: 26)
root_table (AnnotatedBinary.Foo):
+0x44 | 3A 00 00 00 | SOffset32 | 0x0000003A (58) Loc: +0x0A | offset to vtable
+0x48 | 00 00 00 | uint8_t[3] | ... | padding
+0x4B | 01 | uint8_t | 0x01 (1) | table field `healthy` (Bool)
+0x4C | 02 | uint8_t | 0x02 (2) | table field `meal` (Byte)
+0x4D | 02 | UType8 | 0x02 (2) | table field `bar_baz_type` (UType)
+0x4E | 01 | UType8 | 0x01 (1) | table field `measurement_type` (UType)
+0x4F | 01 | UType8 | 0x01 (1) | table field `anything_type` (UType)
+0x50 | D2 04 00 00 | uint32_t | 0x000004D2 (1234) | table field `counter` (Int)
+0x54 | 28 02 00 00 | UOffset32 | 0x00000228 (552) Loc: +0x27C | ERROR: offset to field `bar`. Location is outside the binary.
+0x58 | 01 00 00 00 | uint32_t | 0x00000001 (1) | struct field `AnnotatedBinary.Building.floors` (Int)
+0x5C | 02 00 00 00 | uint32_t | 0x00000002 (2) | struct field `AnnotatedBinary.Building.doors` (Int)
+0x60 | 0C 00 00 00 | uint32_t | 0x0000000C (12) | struct field `AnnotatedBinary.Building.windows` (Int)
+0x64 | 0A 00 00 00 | uint32_t | 0x0000000A (10) | array field `AnnotatedBinary.Dimension.values[0]` (Int)
+0x68 | 0C 00 00 00 | uint32_t | 0x0000000C (12) | array field `AnnotatedBinary.Dimension.values[1]` (Int)
+0x6C | 14 00 00 00 | uint32_t | 0x00000014 (20) | array field `AnnotatedBinary.Dimension.values[2]` (Int)
+0x70 | 01 | uint8_t | 0x01 (1) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
+0x71 | 02 | uint8_t | 0x02 (2) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
+0x72 | 03 | uint8_t | 0x03 (3) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
+0x73 | 00 | uint8_t[1] | . | padding
+0x74 | C8 01 00 00 | UOffset32 | 0x000001C8 (456) Loc: +0x23C | ERROR: offset to field `name`. Location is outside the binary.
+0x78 | 5C 01 00 00 | UOffset32 | 0x0000015C (348) Loc: +0x1D4 | ERROR: offset to field `bars`. Location is outside the binary.
+0x7C | 50 01 00 00 | UOffset32 | 0x00000150 (336) Loc: +0x1CC | ERROR: offset to field `bar_baz`. Location is outside the binary.
+0x80 | 34 01 00 00 | UOffset32 | 0x00000134 (308) Loc: +0x1B4 | ERROR: offset to field `accounts`. Location is outside the binary.
+0x84 | 24 01 00 00 | UOffset32 | 0x00000124 (292) Loc: +0x1A8 | ERROR: offset to field `bob`. Location is outside the binary.
+0x88 | 14 01 00 00 | UOffset32 | 0x00000114 (276) Loc: +0x19C | ERROR: offset to field `alice`. Location is outside the binary.
+0x8C | 0D 00 00 00 | uint32_t | 0x0000000D (13) | table field `just_i32` (Int)
+0x90 | DC 00 00 00 | UOffset32 | 0x000000DC (220) Loc: +0x16C | ERROR: offset to field `names`. Location is outside the binary.
+0x94 | A0 00 00 00 | UOffset32 | 0x000000A0 (160) Loc: +0x134 | ERROR: offset to field `points_of_interest`. Location is outside the binary.
+0x98 | 94 00 00 00 | UOffset32 | 0x00000094 (148) Loc: +0x12C | ERROR: offset to field `foobars_type`. Location is outside the binary.
+0x9C | 38 00 00 00 | UOffset32 | 0x00000038 (56) Loc: +0xD4 | ERROR: offset to field `foobars`. Location is outside the binary.
+0xA0 | 33 00 00 00 | UOffset32 | 0x00000033 (51) Loc: +0xD3 | ERROR: offset to field `measurement`. Location is outside the binary.
+0xA4 | 1C 00 00 00 | UOffset32 | 0x0000001C (28) Loc: +0xC0 | ERROR: offset to field `anything`. Location is outside the binary.
+0xA8 | 04 00 00 00 | UOffset32 | 0x00000004 (4) Loc: +0xAC | offset to field `charlie` (string)
string (AnnotatedBinary.Foo.charlie):
+0xAC | 05 00 | ?uint8_t[2] | .. | ERROR: length of string. Incomplete binary, expected to read 4 bytes here

View File

@@ -0,0 +1,72 @@
// Annotated Flatbuffer Binary
//
// Schema file: annotated_binary.fbs
// Binary file: tests/invalid_struct_array_field_cut_short.bin
header:
+0x00 | 44 00 00 00 | UOffset32 | 0x00000044 (68) Loc: +0x44 | offset to root table `AnnotatedBinary.Foo`
+0x04 | 41 4E 4E 4F | char[4] | ANNO | File Identifier
padding:
+0x08 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Foo):
+0x0A | 3A 00 | uint16_t | 0x003A (58) | size of this vtable
+0x0C | 68 00 | uint16_t | 0x0068 (104) | ERROR: size of referring table. Size of table is larger than the binary.
+0x0E | 0C 00 | VOffset16 | 0x000C (12) | offset to field `counter` (id: 0)
+0x10 | 07 00 | VOffset16 | 0x0007 (7) | offset to field `healthy` (id: 1)
+0x12 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `level` (id: 2) <defaults to 99> (Long)
+0x14 | 08 00 | VOffset16 | 0x0008 (8) | offset to field `meal` (id: 3)
+0x16 | 10 00 | VOffset16 | 0x0010 (16) | offset to field `bar` (id: 4)
+0x18 | 14 00 | VOffset16 | 0x0014 (20) | offset to field `home` (id: 5)
+0x1A | 30 00 | VOffset16 | 0x0030 (48) | ERROR: offset to field `name` (id: 6). Invalid offset, points to outside the binary.
+0x1C | 34 00 | VOffset16 | 0x0034 (52) | ERROR: offset to field `bars` (id: 7). Invalid offset, points to outside the binary.
+0x1E | 09 00 | VOffset16 | 0x0009 (9) | offset to field `bar_baz_type` (id: 8)
+0x20 | 38 00 | VOffset16 | 0x0038 (56) | ERROR: offset to field `bar_baz` (id: 9). Invalid offset, points to outside the binary.
+0x22 | 3C 00 | VOffset16 | 0x003C (60) | ERROR: offset to field `accounts` (id: 10). Invalid offset, points to outside the binary.
+0x24 | 40 00 | VOffset16 | 0x0040 (64) | ERROR: offset to field `bob` (id: 11). Invalid offset, points to outside the binary.
+0x26 | 44 00 | VOffset16 | 0x0044 (68) | ERROR: offset to field `alice` (id: 12). Invalid offset, points to outside the binary.
+0x28 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `maybe_i32` (id: 13) <defaults to 0> (Int)
+0x2A | 00 00 | VOffset16 | 0x0000 (0) | offset to field `default_i32` (id: 14) <defaults to 42> (Int)
+0x2C | 48 00 | VOffset16 | 0x0048 (72) | ERROR: offset to field `just_i32` (id: 15). Invalid offset, points to outside the binary.
+0x2E | 4C 00 | VOffset16 | 0x004C (76) | ERROR: offset to field `names` (id: 16). Invalid offset, points to outside the binary.
+0x30 | 50 00 | VOffset16 | 0x0050 (80) | ERROR: offset to field `points_of_interest` (id: 17). Invalid offset, points to outside the binary.
+0x32 | 54 00 | VOffset16 | 0x0054 (84) | ERROR: offset to field `foobars_type` (id: 18). Invalid offset, points to outside the binary.
+0x34 | 58 00 | VOffset16 | 0x0058 (88) | ERROR: offset to field `foobars` (id: 19). Invalid offset, points to outside the binary.
+0x36 | 0A 00 | VOffset16 | 0x000A (10) | offset to field `measurement_type` (id: 20)
+0x38 | 5C 00 | VOffset16 | 0x005C (92) | ERROR: offset to field `measurement` (id: 21). Invalid offset, points to outside the binary.
+0x3A | 0B 00 | VOffset16 | 0x000B (11) | offset to field `anything_type` (id: 22)
+0x3C | 60 00 | VOffset16 | 0x0060 (96) | ERROR: offset to field `anything` (id: 23). Invalid offset, points to outside the binary.
+0x3E | 00 00 | VOffset16 | 0x0000 (0) | offset to field `temperature` (id: 24) <defaults to 98.600000> (Float)
+0x40 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `teetotaler` (id: 25) <null> (Obj)
+0x42 | 64 00 | VOffset16 | 0x0064 (100) | ERROR: offset to field `charlie` (id: 26). Invalid offset, points to outside the binary.
+0x28 | 00 00 | VOffset16 | 0x0000 (0) | offset to unknown field (id: 13)
+0x2A | 00 00 | VOffset16 | 0x0000 (0) | offset to unknown field (id: 14)
+0x2C | 48 00 | VOffset16 | 0x0048 (72) | offset to unknown field (id: 15)
+0x2E | 4C 00 | VOffset16 | 0x004C (76) | offset to unknown field (id: 16)
+0x30 | 50 00 | VOffset16 | 0x0050 (80) | offset to unknown field (id: 17)
+0x32 | 54 00 | VOffset16 | 0x0054 (84) | offset to unknown field (id: 18)
+0x34 | 58 00 | VOffset16 | 0x0058 (88) | offset to unknown field (id: 19)
+0x36 | 0A 00 | VOffset16 | 0x000A (10) | offset to unknown field (id: 20)
+0x38 | 5C 00 | VOffset16 | 0x005C (92) | offset to unknown field (id: 21)
+0x3A | 0B 00 | VOffset16 | 0x000B (11) | offset to unknown field (id: 22)
+0x3C | 60 00 | VOffset16 | 0x0060 (96) | offset to unknown field (id: 23)
+0x3E | 00 00 | VOffset16 | 0x0000 (0) | offset to unknown field (id: 24)
+0x40 | 00 00 | VOffset16 | 0x0000 (0) | offset to unknown field (id: 25)
+0x42 | 64 00 | VOffset16 | 0x0064 (100) | offset to unknown field (id: 26)
root_table (AnnotatedBinary.Foo):
+0x44 | 3A 00 00 00 | SOffset32 | 0x0000003A (58) Loc: +0x0A | offset to vtable
+0x48 | 00 00 00 | uint8_t[3] | ... | padding
+0x4B | 01 | uint8_t | 0x01 (1) | table field `healthy` (Bool)
+0x4C | 02 | uint8_t | 0x02 (2) | table field `meal` (Byte)
+0x4D | 02 | UType8 | 0x02 (2) | table field `bar_baz_type` (UType)
+0x4E | 01 | UType8 | 0x01 (1) | table field `measurement_type` (UType)
+0x4F | 01 | UType8 | 0x01 (1) | table field `anything_type` (UType)
+0x50 | D2 04 00 00 | uint32_t | 0x000004D2 (1234) | table field `counter` (Int)
+0x54 | 28 02 00 00 | UOffset32 | 0x00000228 (552) Loc: +0x27C | ERROR: offset to field `bar`. Location is outside the binary.
+0x58 | 01 00 00 00 | uint32_t | 0x00000001 (1) | struct field `AnnotatedBinary.Building.floors` (Int)
+0x5C | 02 00 00 00 | uint32_t | 0x00000002 (2) | struct field `AnnotatedBinary.Building.doors` (Int)
+0x60 | 0C 00 00 00 | uint32_t | 0x0000000C (12) | struct field `AnnotatedBinary.Building.windows` (Int)
+0x64 | 0A 00 00 00 | uint32_t | 0x0000000A (10) | array field `AnnotatedBinary.Dimension.values[0]` (Int)
+0x68 | 0C 00 | ?uint8_t[2] | .. | ERROR: array field `AnnotatedBinary.Dimension.values[1]` (Int). Expected to read 4 bytes.

View File

@@ -0,0 +1,69 @@
// Annotated Flatbuffer Binary
//
// Schema file: annotated_binary.fbs
// Binary file: tests/invalid_struct_field_cut_short.bin
header:
+0x00 | 44 00 00 00 | UOffset32 | 0x00000044 (68) Loc: +0x44 | offset to root table `AnnotatedBinary.Foo`
+0x04 | 41 4E 4E 4F | char[4] | ANNO | File Identifier
padding:
+0x08 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Foo):
+0x0A | 3A 00 | uint16_t | 0x003A (58) | size of this vtable
+0x0C | 68 00 | uint16_t | 0x0068 (104) | ERROR: size of referring table. Size of table is larger than the binary.
+0x0E | 0C 00 | VOffset16 | 0x000C (12) | offset to field `counter` (id: 0)
+0x10 | 07 00 | VOffset16 | 0x0007 (7) | offset to field `healthy` (id: 1)
+0x12 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `level` (id: 2) <defaults to 99> (Long)
+0x14 | 08 00 | VOffset16 | 0x0008 (8) | offset to field `meal` (id: 3)
+0x16 | 10 00 | VOffset16 | 0x0010 (16) | offset to field `bar` (id: 4)
+0x18 | 14 00 | VOffset16 | 0x0014 (20) | offset to field `home` (id: 5)
+0x1A | 30 00 | VOffset16 | 0x0030 (48) | ERROR: offset to field `name` (id: 6). Invalid offset, points to outside the binary.
+0x1C | 34 00 | VOffset16 | 0x0034 (52) | ERROR: offset to field `bars` (id: 7). Invalid offset, points to outside the binary.
+0x1E | 09 00 | VOffset16 | 0x0009 (9) | offset to field `bar_baz_type` (id: 8)
+0x20 | 38 00 | VOffset16 | 0x0038 (56) | ERROR: offset to field `bar_baz` (id: 9). Invalid offset, points to outside the binary.
+0x22 | 3C 00 | VOffset16 | 0x003C (60) | ERROR: offset to field `accounts` (id: 10). Invalid offset, points to outside the binary.
+0x24 | 40 00 | VOffset16 | 0x0040 (64) | ERROR: offset to field `bob` (id: 11). Invalid offset, points to outside the binary.
+0x26 | 44 00 | VOffset16 | 0x0044 (68) | ERROR: offset to field `alice` (id: 12). Invalid offset, points to outside the binary.
+0x28 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `maybe_i32` (id: 13) <defaults to 0> (Int)
+0x2A | 00 00 | VOffset16 | 0x0000 (0) | offset to field `default_i32` (id: 14) <defaults to 42> (Int)
+0x2C | 48 00 | VOffset16 | 0x0048 (72) | ERROR: offset to field `just_i32` (id: 15). Invalid offset, points to outside the binary.
+0x2E | 4C 00 | VOffset16 | 0x004C (76) | ERROR: offset to field `names` (id: 16). Invalid offset, points to outside the binary.
+0x30 | 50 00 | VOffset16 | 0x0050 (80) | ERROR: offset to field `points_of_interest` (id: 17). Invalid offset, points to outside the binary.
+0x32 | 54 00 | VOffset16 | 0x0054 (84) | ERROR: offset to field `foobars_type` (id: 18). Invalid offset, points to outside the binary.
+0x34 | 58 00 | VOffset16 | 0x0058 (88) | ERROR: offset to field `foobars` (id: 19). Invalid offset, points to outside the binary.
+0x36 | 0A 00 | VOffset16 | 0x000A (10) | offset to field `measurement_type` (id: 20)
+0x38 | 5C 00 | VOffset16 | 0x005C (92) | ERROR: offset to field `measurement` (id: 21). Invalid offset, points to outside the binary.
+0x3A | 0B 00 | VOffset16 | 0x000B (11) | offset to field `anything_type` (id: 22)
+0x3C | 60 00 | VOffset16 | 0x0060 (96) | ERROR: offset to field `anything` (id: 23). Invalid offset, points to outside the binary.
+0x3E | 00 00 | VOffset16 | 0x0000 (0) | offset to field `temperature` (id: 24) <defaults to 98.600000> (Float)
+0x40 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `teetotaler` (id: 25) <null> (Obj)
+0x42 | 64 00 | VOffset16 | 0x0064 (100) | ERROR: offset to field `charlie` (id: 26). Invalid offset, points to outside the binary.
+0x28 | 00 00 | VOffset16 | 0x0000 (0) | offset to unknown field (id: 13)
+0x2A | 00 00 | VOffset16 | 0x0000 (0) | offset to unknown field (id: 14)
+0x2C | 48 00 | VOffset16 | 0x0048 (72) | offset to unknown field (id: 15)
+0x2E | 4C 00 | VOffset16 | 0x004C (76) | offset to unknown field (id: 16)
+0x30 | 50 00 | VOffset16 | 0x0050 (80) | offset to unknown field (id: 17)
+0x32 | 54 00 | VOffset16 | 0x0054 (84) | offset to unknown field (id: 18)
+0x34 | 58 00 | VOffset16 | 0x0058 (88) | offset to unknown field (id: 19)
+0x36 | 0A 00 | VOffset16 | 0x000A (10) | offset to unknown field (id: 20)
+0x38 | 5C 00 | VOffset16 | 0x005C (92) | offset to unknown field (id: 21)
+0x3A | 0B 00 | VOffset16 | 0x000B (11) | offset to unknown field (id: 22)
+0x3C | 60 00 | VOffset16 | 0x0060 (96) | offset to unknown field (id: 23)
+0x3E | 00 00 | VOffset16 | 0x0000 (0) | offset to unknown field (id: 24)
+0x40 | 00 00 | VOffset16 | 0x0000 (0) | offset to unknown field (id: 25)
+0x42 | 64 00 | VOffset16 | 0x0064 (100) | offset to unknown field (id: 26)
root_table (AnnotatedBinary.Foo):
+0x44 | 3A 00 00 00 | SOffset32 | 0x0000003A (58) Loc: +0x0A | offset to vtable
+0x48 | 00 00 00 | uint8_t[3] | ... | padding
+0x4B | 01 | uint8_t | 0x01 (1) | table field `healthy` (Bool)
+0x4C | 02 | uint8_t | 0x02 (2) | table field `meal` (Byte)
+0x4D | 02 | UType8 | 0x02 (2) | table field `bar_baz_type` (UType)
+0x4E | 01 | UType8 | 0x01 (1) | table field `measurement_type` (UType)
+0x4F | 01 | UType8 | 0x01 (1) | table field `anything_type` (UType)
+0x50 | D2 04 00 00 | uint32_t | 0x000004D2 (1234) | table field `counter` (Int)
+0x54 | 28 02 00 00 | UOffset32 | 0x00000228 (552) Loc: +0x27C | ERROR: offset to field `bar`. Location is outside the binary.
+0x58 | 01 00 00 00 | uint32_t | 0x00000001 (1) | struct field `AnnotatedBinary.Building.floors` (Int)
+0x5C | 02 00 | ?uint8_t[2] | .. | ERROR: struct field `AnnotatedBinary.Building.doors` (Int). Expected to read 4 bytes.

View File

@@ -0,0 +1,77 @@
// Annotated Flatbuffer Binary
//
// Schema file: annotated_binary.fbs
// Binary file: tests/invalid_table_field_offset.bin
header:
+0x00 | 44 00 00 00 | UOffset32 | 0x00000044 (68) Loc: +0x44 | offset to root table `AnnotatedBinary.Foo`
+0x04 | 41 4E 4E 4F | char[4] | ANNO | File Identifier
padding:
+0x08 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Foo):
+0x0A | 3A 00 | uint16_t | 0x003A (58) | size of this vtable
+0x0C | 68 00 | uint16_t | 0x0068 (104) | ERROR: size of referring table. Size of table is larger than the binary.
+0x0E | 0C 00 | VOffset16 | 0x000C (12) | offset to field `counter` (id: 0)
+0x10 | 07 00 | VOffset16 | 0x0007 (7) | offset to field `healthy` (id: 1)
+0x12 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `level` (id: 2) <defaults to 99> (Long)
+0x14 | 08 00 | VOffset16 | 0x0008 (8) | offset to field `meal` (id: 3)
+0x16 | 10 00 | VOffset16 | 0x0010 (16) | offset to field `bar` (id: 4)
+0x18 | 14 00 | VOffset16 | 0x0014 (20) | offset to field `home` (id: 5)
+0x1A | 30 00 | VOffset16 | 0x0030 (48) | offset to field `name` (id: 6)
+0x1C | 34 00 | VOffset16 | 0x0034 (52) | offset to field `bars` (id: 7)
+0x1E | 09 00 | VOffset16 | 0x0009 (9) | offset to field `bar_baz_type` (id: 8)
+0x20 | 38 00 | VOffset16 | 0x0038 (56) | offset to field `bar_baz` (id: 9)
+0x22 | 3C 00 | VOffset16 | 0x003C (60) | offset to field `accounts` (id: 10)
+0x24 | 40 00 | VOffset16 | 0x0040 (64) | offset to field `bob` (id: 11)
+0x26 | 44 00 | VOffset16 | 0x0044 (68) | offset to field `alice` (id: 12)
+0x28 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `maybe_i32` (id: 13) <defaults to 0> (Int)
+0x2A | 00 00 | VOffset16 | 0x0000 (0) | offset to field `default_i32` (id: 14) <defaults to 42> (Int)
+0x2C | 48 00 | VOffset16 | 0x0048 (72) | offset to field `just_i32` (id: 15)
+0x2E | 4C 00 | VOffset16 | 0x004C (76) | offset to field `names` (id: 16)
+0x30 | 50 00 | VOffset16 | 0x0050 (80) | offset to field `points_of_interest` (id: 17)
+0x32 | 54 00 | VOffset16 | 0x0054 (84) | ERROR: offset to field `foobars_type` (id: 18). Invalid offset, points to outside the binary.
+0x34 | 58 00 | VOffset16 | 0x0058 (88) | ERROR: offset to field `foobars` (id: 19). Invalid offset, points to outside the binary.
+0x36 | 0A 00 | VOffset16 | 0x000A (10) | offset to field `measurement_type` (id: 20)
+0x38 | 5C 00 | VOffset16 | 0x005C (92) | ERROR: offset to field `measurement` (id: 21). Invalid offset, points to outside the binary.
+0x3A | 0B 00 | VOffset16 | 0x000B (11) | offset to field `anything_type` (id: 22)
+0x3C | 60 00 | VOffset16 | 0x0060 (96) | ERROR: offset to field `anything` (id: 23). Invalid offset, points to outside the binary.
+0x3E | 00 00 | VOffset16 | 0x0000 (0) | offset to field `temperature` (id: 24) <defaults to 98.600000> (Float)
+0x40 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `teetotaler` (id: 25) <null> (Obj)
+0x42 | 64 00 | VOffset16 | 0x0064 (100) | ERROR: offset to field `charlie` (id: 26). Invalid offset, points to outside the binary.
+0x3A | 0B 00 | VOffset16 | 0x000B (11) | offset to unknown field (id: 22)
+0x3C | 60 00 | VOffset16 | 0x0060 (96) | offset to unknown field (id: 23)
+0x3E | 00 00 | VOffset16 | 0x0000 (0) | offset to unknown field (id: 24)
+0x40 | 00 00 | VOffset16 | 0x0000 (0) | offset to unknown field (id: 25)
+0x42 | 64 00 | VOffset16 | 0x0064 (100) | offset to unknown field (id: 26)
root_table (AnnotatedBinary.Foo):
+0x44 | 3A 00 00 00 | SOffset32 | 0x0000003A (58) Loc: +0x0A | offset to vtable
+0x48 | 00 00 00 | uint8_t[3] | ... | padding
+0x4B | 01 | uint8_t | 0x01 (1) | table field `healthy` (Bool)
+0x4C | 02 | uint8_t | 0x02 (2) | table field `meal` (Byte)
+0x4D | 02 | UType8 | 0x02 (2) | table field `bar_baz_type` (UType)
+0x4E | 01 | UType8 | 0x01 (1) | table field `measurement_type` (UType)
+0x4F | 01 | UType8 | 0x01 (1) | table field `anything_type` (UType)
+0x50 | D2 04 00 00 | uint32_t | 0x000004D2 (1234) | table field `counter` (Int)
+0x54 | 28 02 00 00 | UOffset32 | 0x00000228 (552) Loc: +0x27C | ERROR: offset to field `bar`. Location is outside the binary.
+0x58 | 01 00 00 00 | uint32_t | 0x00000001 (1) | struct field `AnnotatedBinary.Building.floors` (Int)
+0x5C | 02 00 00 00 | uint32_t | 0x00000002 (2) | struct field `AnnotatedBinary.Building.doors` (Int)
+0x60 | 0C 00 00 00 | uint32_t | 0x0000000C (12) | struct field `AnnotatedBinary.Building.windows` (Int)
+0x64 | 0A 00 00 00 | uint32_t | 0x0000000A (10) | array field `AnnotatedBinary.Dimension.values[0]` (Int)
+0x68 | 0C 00 00 00 | uint32_t | 0x0000000C (12) | array field `AnnotatedBinary.Dimension.values[1]` (Int)
+0x6C | 14 00 00 00 | uint32_t | 0x00000014 (20) | array field `AnnotatedBinary.Dimension.values[2]` (Int)
+0x70 | 01 | uint8_t | 0x01 (1) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
+0x71 | 02 | uint8_t | 0x02 (2) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
+0x72 | 03 | uint8_t | 0x03 (3) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
+0x73 | 00 | uint8_t[1] | . | padding
+0x74 | C8 01 00 00 | UOffset32 | 0x000001C8 (456) Loc: +0x23C | ERROR: offset to field `name`. Location is outside the binary.
+0x78 | 5C 01 00 00 | UOffset32 | 0x0000015C (348) Loc: +0x1D4 | ERROR: offset to field `bars`. Location is outside the binary.
+0x7C | 50 01 00 00 | UOffset32 | 0x00000150 (336) Loc: +0x1CC | ERROR: offset to field `bar_baz`. Location is outside the binary.
+0x80 | 34 01 00 00 | UOffset32 | 0x00000134 (308) Loc: +0x1B4 | ERROR: offset to field `accounts`. Location is outside the binary.
+0x84 | 24 01 00 00 | UOffset32 | 0x00000124 (292) Loc: +0x1A8 | ERROR: offset to field `bob`. Location is outside the binary.
+0x88 | 14 01 00 00 | UOffset32 | 0x00000114 (276) Loc: +0x19C | ERROR: offset to field `alice`. Location is outside the binary.
+0x8C | 0D 00 00 00 | uint32_t | 0x0000000D (13) | table field `just_i32` (Int)
+0x90 | DC 00 00 00 | UOffset32 | 0x000000DC (220) Loc: +0x16C | ERROR: offset to field `names`. Location is outside the binary.
+0x94 | A0 00 | ?uint8_t[2] | .. | ERROR: offset to field `points_of_interest`. Incomplete binary, expected to read 4 bytes here

View File

@@ -0,0 +1,68 @@
// Annotated Flatbuffer Binary
//
// Schema file: annotated_binary.fbs
// Binary file: tests/invalid_table_field_size.bin
header:
+0x00 | 44 00 00 00 | UOffset32 | 0x00000044 (68) Loc: +0x44 | offset to root table `AnnotatedBinary.Foo`
+0x04 | 41 4E 4E 4F | char[4] | ANNO | File Identifier
padding:
+0x08 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Foo):
+0x0A | 3A 00 | uint16_t | 0x003A (58) | size of this vtable
+0x0C | 68 00 | uint16_t | 0x0068 (104) | ERROR: size of referring table. Size of table is larger than the binary.
+0x0E | 0C 00 | VOffset16 | 0x000C (12) | offset to field `counter` (id: 0)
+0x10 | 07 00 | VOffset16 | 0x0007 (7) | offset to field `healthy` (id: 1)
+0x12 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `level` (id: 2) <defaults to 99> (Long)
+0x14 | 08 00 | VOffset16 | 0x0008 (8) | offset to field `meal` (id: 3)
+0x16 | 10 00 | VOffset16 | 0x0010 (16) | ERROR: offset to field `bar` (id: 4). Invalid offset, points to outside the binary.
+0x18 | 14 00 | VOffset16 | 0x0014 (20) | ERROR: offset to field `home` (id: 5). Invalid offset, points to outside the binary.
+0x1A | 30 00 | VOffset16 | 0x0030 (48) | ERROR: offset to field `name` (id: 6). Invalid offset, points to outside the binary.
+0x1C | 34 00 | VOffset16 | 0x0034 (52) | ERROR: offset to field `bars` (id: 7). Invalid offset, points to outside the binary.
+0x1E | 09 00 | VOffset16 | 0x0009 (9) | offset to field `bar_baz_type` (id: 8)
+0x20 | 38 00 | VOffset16 | 0x0038 (56) | ERROR: offset to field `bar_baz` (id: 9). Invalid offset, points to outside the binary.
+0x22 | 3C 00 | VOffset16 | 0x003C (60) | ERROR: offset to field `accounts` (id: 10). Invalid offset, points to outside the binary.
+0x24 | 40 00 | VOffset16 | 0x0040 (64) | ERROR: offset to field `bob` (id: 11). Invalid offset, points to outside the binary.
+0x26 | 44 00 | VOffset16 | 0x0044 (68) | ERROR: offset to field `alice` (id: 12). Invalid offset, points to outside the binary.
+0x28 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `maybe_i32` (id: 13) <defaults to 0> (Int)
+0x2A | 00 00 | VOffset16 | 0x0000 (0) | offset to field `default_i32` (id: 14) <defaults to 42> (Int)
+0x2C | 48 00 | VOffset16 | 0x0048 (72) | ERROR: offset to field `just_i32` (id: 15). Invalid offset, points to outside the binary.
+0x2E | 4C 00 | VOffset16 | 0x004C (76) | ERROR: offset to field `names` (id: 16). Invalid offset, points to outside the binary.
+0x30 | 50 00 | VOffset16 | 0x0050 (80) | ERROR: offset to field `points_of_interest` (id: 17). Invalid offset, points to outside the binary.
+0x32 | 54 00 | VOffset16 | 0x0054 (84) | ERROR: offset to field `foobars_type` (id: 18). Invalid offset, points to outside the binary.
+0x34 | 58 00 | VOffset16 | 0x0058 (88) | ERROR: offset to field `foobars` (id: 19). Invalid offset, points to outside the binary.
+0x36 | 0A 00 | VOffset16 | 0x000A (10) | offset to field `measurement_type` (id: 20)
+0x38 | 5C 00 | VOffset16 | 0x005C (92) | ERROR: offset to field `measurement` (id: 21). Invalid offset, points to outside the binary.
+0x3A | 0B 00 | VOffset16 | 0x000B (11) | offset to field `anything_type` (id: 22)
+0x3C | 60 00 | VOffset16 | 0x0060 (96) | ERROR: offset to field `anything` (id: 23). Invalid offset, points to outside the binary.
+0x3E | 00 00 | VOffset16 | 0x0000 (0) | offset to field `temperature` (id: 24) <defaults to 98.600000> (Float)
+0x40 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `teetotaler` (id: 25) <null> (Obj)
+0x42 | 64 00 | VOffset16 | 0x0064 (100) | ERROR: offset to field `charlie` (id: 26). Invalid offset, points to outside the binary.
+0x24 | 40 00 | VOffset16 | 0x0040 (64) | offset to unknown field (id: 11)
+0x26 | 44 00 | VOffset16 | 0x0044 (68) | offset to unknown field (id: 12)
+0x28 | 00 00 | VOffset16 | 0x0000 (0) | offset to unknown field (id: 13)
+0x2A | 00 00 | VOffset16 | 0x0000 (0) | offset to unknown field (id: 14)
+0x2C | 48 00 | VOffset16 | 0x0048 (72) | offset to unknown field (id: 15)
+0x2E | 4C 00 | VOffset16 | 0x004C (76) | offset to unknown field (id: 16)
+0x30 | 50 00 | VOffset16 | 0x0050 (80) | offset to unknown field (id: 17)
+0x32 | 54 00 | VOffset16 | 0x0054 (84) | offset to unknown field (id: 18)
+0x34 | 58 00 | VOffset16 | 0x0058 (88) | offset to unknown field (id: 19)
+0x36 | 0A 00 | VOffset16 | 0x000A (10) | offset to unknown field (id: 20)
+0x38 | 5C 00 | VOffset16 | 0x005C (92) | offset to unknown field (id: 21)
+0x3A | 0B 00 | VOffset16 | 0x000B (11) | offset to unknown field (id: 22)
+0x3C | 60 00 | VOffset16 | 0x0060 (96) | offset to unknown field (id: 23)
+0x3E | 00 00 | VOffset16 | 0x0000 (0) | offset to unknown field (id: 24)
+0x40 | 00 00 | VOffset16 | 0x0000 (0) | offset to unknown field (id: 25)
+0x42 | 64 00 | VOffset16 | 0x0064 (100) | offset to unknown field (id: 26)
root_table (AnnotatedBinary.Foo):
+0x44 | 3A 00 00 00 | SOffset32 | 0x0000003A (58) Loc: +0x0A | offset to vtable
+0x48 | 00 00 00 | uint8_t[3] | ... | padding
+0x4B | 01 | uint8_t | 0x01 (1) | table field `healthy` (Bool)
+0x4C | 02 | uint8_t | 0x02 (2) | table field `meal` (Byte)
+0x4D | 02 | UType8 | 0x02 (2) | table field `bar_baz_type` (UType)
+0x4E | 01 | UType8 | 0x01 (1) | table field `measurement_type` (UType)
+0x4F | 01 | UType8 | 0x01 (1) | table field `anything_type` (UType)
+0x50 | D2 04 | ?uint8_t[2] | .. | ERROR: table field `counter` (Int). Expected 4 bytes.

View File

@@ -0,0 +1,293 @@
// Annotated Flatbuffer Binary
//
// Schema file: annotated_binary.fbs
// Binary file: tests/invalid_union_type_value.bin
header:
+0x0000 | 44 00 00 00 | UOffset32 | 0x00000044 (68) Loc: +0x0044 | offset to root table `AnnotatedBinary.Foo`
+0x0004 | 41 4E 4E 4F | char[4] | ANNO | File Identifier
padding:
+0x0008 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Foo):
+0x000A | 3A 00 | uint16_t | 0x003A (58) | size of this vtable
+0x000C | 68 00 | uint16_t | 0x0068 (104) | size of referring table
+0x000E | 0C 00 | VOffset16 | 0x000C (12) | offset to field `counter` (id: 0)
+0x0010 | 07 00 | VOffset16 | 0x0007 (7) | offset to field `healthy` (id: 1)
+0x0012 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `level` (id: 2) <defaults to 99> (Long)
+0x0014 | 08 00 | VOffset16 | 0x0008 (8) | offset to field `meal` (id: 3)
+0x0016 | 10 00 | VOffset16 | 0x0010 (16) | offset to field `bar` (id: 4)
+0x0018 | 14 00 | VOffset16 | 0x0014 (20) | offset to field `home` (id: 5)
+0x001A | 30 00 | VOffset16 | 0x0030 (48) | offset to field `name` (id: 6)
+0x001C | 34 00 | VOffset16 | 0x0034 (52) | offset to field `bars` (id: 7)
+0x001E | 09 00 | VOffset16 | 0x0009 (9) | offset to field `bar_baz_type` (id: 8)
+0x0020 | 38 00 | VOffset16 | 0x0038 (56) | offset to field `bar_baz` (id: 9)
+0x0022 | 3C 00 | VOffset16 | 0x003C (60) | offset to field `accounts` (id: 10)
+0x0024 | 40 00 | VOffset16 | 0x0040 (64) | offset to field `bob` (id: 11)
+0x0026 | 44 00 | VOffset16 | 0x0044 (68) | offset to field `alice` (id: 12)
+0x0028 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `maybe_i32` (id: 13) <defaults to 0> (Int)
+0x002A | 00 00 | VOffset16 | 0x0000 (0) | offset to field `default_i32` (id: 14) <defaults to 42> (Int)
+0x002C | 48 00 | VOffset16 | 0x0048 (72) | offset to field `just_i32` (id: 15)
+0x002E | 4C 00 | VOffset16 | 0x004C (76) | offset to field `names` (id: 16)
+0x0030 | 50 00 | VOffset16 | 0x0050 (80) | offset to field `points_of_interest` (id: 17)
+0x0032 | 54 00 | VOffset16 | 0x0054 (84) | offset to field `foobars_type` (id: 18)
+0x0034 | 58 00 | VOffset16 | 0x0058 (88) | offset to field `foobars` (id: 19)
+0x0036 | 0A 00 | VOffset16 | 0x000A (10) | offset to field `measurement_type` (id: 20)
+0x0038 | 5C 00 | VOffset16 | 0x005C (92) | offset to field `measurement` (id: 21)
+0x003A | 0B 00 | VOffset16 | 0x000B (11) | offset to field `anything_type` (id: 22)
+0x003C | 60 00 | VOffset16 | 0x0060 (96) | offset to field `anything` (id: 23)
+0x003E | 00 00 | VOffset16 | 0x0000 (0) | offset to field `temperature` (id: 24) <defaults to 98.600000> (Float)
+0x0040 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `teetotaler` (id: 25) <null> (Obj)
+0x0042 | 64 00 | VOffset16 | 0x0064 (100) | offset to field `charlie` (id: 26)
root_table (AnnotatedBinary.Foo):
+0x0044 | 3A 00 00 00 | SOffset32 | 0x0000003A (58) Loc: +0x000A | offset to vtable
+0x0048 | 00 00 00 | uint8_t[3] | ... | padding
+0x004B | 01 | uint8_t | 0x01 (1) | table field `healthy` (Bool)
+0x004C | 02 | uint8_t | 0x02 (2) | table field `meal` (Byte)
+0x004D | FF | UType8 | 0xFF (255) | ERROR: table field `bar_baz_type` (UType) . Invalid union type value.
+0x004E | 01 | UType8 | 0x01 (1) | table field `measurement_type` (UType)
+0x004F | 01 | UType8 | 0x01 (1) | table field `anything_type` (UType)
+0x0050 | D2 04 00 00 | uint32_t | 0x000004D2 (1234) | table field `counter` (Int)
+0x0054 | 28 02 00 00 | UOffset32 | 0x00000228 (552) Loc: +0x027C | offset to field `bar` (table)
+0x0058 | 01 00 00 00 | uint32_t | 0x00000001 (1) | struct field `AnnotatedBinary.Building.floors` (Int)
+0x005C | 02 00 00 00 | uint32_t | 0x00000002 (2) | struct field `AnnotatedBinary.Building.doors` (Int)
+0x0060 | 0C 00 00 00 | uint32_t | 0x0000000C (12) | struct field `AnnotatedBinary.Building.windows` (Int)
+0x0064 | 0A 00 00 00 | uint32_t | 0x0000000A (10) | array field `AnnotatedBinary.Dimension.values[0]` (Int)
+0x0068 | 0C 00 00 00 | uint32_t | 0x0000000C (12) | array field `AnnotatedBinary.Dimension.values[1]` (Int)
+0x006C | 14 00 00 00 | uint32_t | 0x00000014 (20) | array field `AnnotatedBinary.Dimension.values[2]` (Int)
+0x0070 | 01 | uint8_t | 0x01 (1) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
+0x0071 | 02 | uint8_t | 0x02 (2) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
+0x0072 | 03 | uint8_t | 0x03 (3) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
+0x0073 | 00 | uint8_t[1] | . | padding
+0x0074 | C8 01 00 00 | UOffset32 | 0x000001C8 (456) Loc: +0x023C | offset to field `name` (string)
+0x0078 | 5C 01 00 00 | UOffset32 | 0x0000015C (348) Loc: +0x01D4 | offset to field `bars` (vector)
+0x007C | 50 01 00 00 | ?uint8_t[4] | P... | WARN: nothing refers to this region.
+0x0080 | 34 01 00 00 | UOffset32 | 0x00000134 (308) Loc: +0x01B4 | offset to field `accounts` (vector)
+0x0084 | 24 01 00 00 | UOffset32 | 0x00000124 (292) Loc: +0x01A8 | offset to field `bob` (string)
+0x0088 | 14 01 00 00 | UOffset32 | 0x00000114 (276) Loc: +0x019C | offset to field `alice` (string)
+0x008C | 0D 00 00 00 | uint32_t | 0x0000000D (13) | table field `just_i32` (Int)
+0x0090 | DC 00 00 00 | UOffset32 | 0x000000DC (220) Loc: +0x016C | offset to field `names` (vector)
+0x0094 | A0 00 00 00 | UOffset32 | 0x000000A0 (160) Loc: +0x0134 | offset to field `points_of_interest` (vector)
+0x0098 | 94 00 00 00 | UOffset32 | 0x00000094 (148) Loc: +0x012C | offset to field `foobars_type` (vector)
+0x009C | 38 00 00 00 | UOffset32 | 0x00000038 (56) Loc: +0x00D4 | offset to field `foobars` (vector)
+0x00A0 | 33 00 00 00 | UOffset32 | 0x00000033 (51) Loc: +0x00D3 | offset to field `measurement` (union of type `Tolerance`)
+0x00A4 | 1C 00 00 00 | UOffset32 | 0x0000001C (28) Loc: +0x00C0 | offset to field `anything` (union of type `Bar`)
+0x00A8 | 04 00 00 00 | UOffset32 | 0x00000004 (4) Loc: +0x00AC | offset to field `charlie` (string)
string (AnnotatedBinary.Foo.charlie):
+0x00AC | 05 00 00 00 | uint32_t | 0x00000005 (5) | length of string
+0x00B0 | 61 6C 69 63 65 | char[5] | alice
+0x00B5 | 00 | char | 0x00 (0) | string terminator
padding:
+0x00B6 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Bar):
+0x00B8 | 08 00 | uint16_t | 0x0008 (8) | size of this vtable
+0x00BA | 13 00 | uint16_t | 0x0013 (19) | size of referring table
+0x00BC | 08 00 | VOffset16 | 0x0008 (8) | offset to field `a` (id: 0)
+0x00BE | 04 00 | VOffset16 | 0x0004 (4) | offset to field `b` (id: 1)
table (AnnotatedBinary.Bar):
+0x00C0 | 08 00 00 00 | SOffset32 | 0x00000008 (8) Loc: +0x00B8 | offset to vtable
+0x00C4 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float)
+0x00C8 | 00 00 00 00 00 10 74 40 | double | 0x4074100000000000 (321.000000) | table field `a` (Double)
+0x00D0 | 00 00 00 | uint8_t[3] | ... | padding
union (AnnotatedBinary.Tolerance.measurement):
+0x00D3 | 05 | uint8_t | 0x05 (5) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
vector (AnnotatedBinary.Foo.foobars):
+0x00D4 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x00D8 | 34 00 00 00 | UOffset32 | 0x00000034 (52) Loc: +0x010C | offset to union[0] (`Bar`)
+0x00DC | 2C 00 00 00 | UOffset32 | 0x0000002C (44) Loc: +0x0108 | offset to union[1] (`Baz`)
+0x00E0 | 04 00 00 00 | UOffset32 | 0x00000004 (4) Loc: +0x00E4 | offset to union[2] (`Bar`)
table (AnnotatedBinary.Bar):
+0x00E4 | D2 FE FF FF | SOffset32 | 0xFFFFFED2 (-302) Loc: +0x0212 | offset to vtable
+0x00E8 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float)
+0x00EC | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x00FC | offset to field `c` (table)
+0x00F0 | 00 00 00 00 00 D8 8E 40 | double | 0x408ED80000000000 (987.000000) | table field `a` (Double)
+0x00F8 | 00 00 00 00 | uint8_t[4] | .... | padding
table (AnnotatedBinary.Baz):
+0x00FC | 6A FE FF FF | SOffset32 | 0xFFFFFE6A (-406) Loc: +0x0292 | offset to vtable
+0x0100 | 00 00 00 | uint8_t[3] | ... | padding
+0x0103 | 03 | uint8_t | 0x03 (3) | table field `meal` (Byte)
vtable (AnnotatedBinary.Baz):
+0x0104 | 04 00 | uint16_t | 0x0004 (4) | size of this vtable
+0x0106 | 04 00 | uint16_t | 0x0004 (4) | size of referring table
table (AnnotatedBinary.Baz):
+0x0108 | 04 00 00 00 | SOffset32 | 0x00000004 (4) Loc: +0x0104 | offset to vtable
table (AnnotatedBinary.Bar):
+0x010C | FA FE FF FF | SOffset32 | 0xFFFFFEFA (-262) Loc: +0x0212 | offset to vtable
+0x0110 | 00 00 E4 43 | float | 0x43E40000 (456.000000) | table field `b` (Float)
+0x0114 | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x0124 | offset to field `c` (table)
+0x0118 | 00 00 00 00 00 C0 5E 40 | double | 0x405EC00000000000 (123.000000) | table field `a` (Double)
+0x0120 | 00 00 00 00 | uint8_t[4] | .... | padding
table (AnnotatedBinary.Baz):
+0x0124 | 92 FE FF FF | SOffset32 | 0xFFFFFE92 (-366) Loc: +0x0292 | offset to vtable
+0x0128 | 00 00 00 | uint8_t[3] | ... | padding
+0x012B | 01 | uint8_t | 0x01 (1) | table field `meal` (Byte)
vector (AnnotatedBinary.Foo.foobars_type):
+0x012C | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x0130 | 01 | UType8 | 0x01 (1) | value[0]
+0x0131 | 02 | UType8 | 0x02 (2) | value[1]
+0x0132 | 01 | UType8 | 0x01 (1) | value[2]
vector (AnnotatedBinary.Foo.points_of_interest):
+0x0134 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x0138 | 33 33 33 33 33 A3 45 40 | double | 0x4045A33333333333 (43.275000) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0140 | 7E 57 04 FF 5B 87 53 C0 | double | 0xC053875BFF04577E (-78.114990) | struct field `AnnotatedBinary.Location.longitude` (Double)
+0x0148 | 8D F0 F6 20 04 B6 42 40 | double | 0x4042B60420F6F08D (37.422001) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0150 | 9F 77 63 41 61 85 5E C0 | double | 0xC05E85614163779F (-122.084061) | struct field `AnnotatedBinary.Location.longitude` (Double)
+0x0158 | 8F 35 23 83 DC 35 4B C0 | double | 0xC04B35DC8323358F (-54.420792) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0160 | F6 97 DD 93 87 C5 0A 40 | double | 0x400AC58793DD97F6 (3.346450) | struct field `AnnotatedBinary.Location.longitude` (Double)
padding:
+0x0168 | 00 00 00 00 | uint8_t[4] | .... | padding
vector (AnnotatedBinary.Foo.names):
+0x016C | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x0170 | 20 00 00 00 | UOffset32 | 0x00000020 (32) Loc: +0x0190 | offset to string[0]
+0x0174 | 14 00 00 00 | UOffset32 | 0x00000014 (20) Loc: +0x0188 | offset to string[1]
+0x0178 | 04 00 00 00 | UOffset32 | 0x00000004 (4) Loc: +0x017C | offset to string[2]
string (AnnotatedBinary.Foo.names):
+0x017C | 07 00 00 00 | uint32_t | 0x00000007 (7) | length of string
+0x0180 | 63 68 61 72 6C 69 65 | char[7] | charlie
+0x0187 | 00 | char | 0x00 (0) | string terminator
string (AnnotatedBinary.Foo.names):
+0x0188 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of string
+0x018C | 62 6F 62 | char[3] | bob
+0x018F | 00 | char | 0x00 (0) | string terminator
string (AnnotatedBinary.Foo.names):
+0x0190 | 05 00 00 00 | uint32_t | 0x00000005 (5) | length of string
+0x0194 | 61 6C 69 63 65 | char[5] | alice
+0x0199 | 00 | char | 0x00 (0) | string terminator
padding:
+0x019A | 00 00 | uint8_t[2] | .. | padding
string (AnnotatedBinary.Foo.alice):
+0x019C | 07 00 00 00 | uint32_t | 0x00000007 (7) | length of string
+0x01A0 | 63 68 61 72 6C 69 65 | char[7] | charlie
+0x01A7 | 00 | char | 0x00 (0) | string terminator
string (AnnotatedBinary.Foo.bob):
+0x01A8 | 07 00 00 00 | uint32_t | 0x00000007 (7) | length of string
+0x01AC | 63 68 61 72 6C 69 65 | char[7] | charlie
+0x01B3 | 00 | char | 0x00 (0) | string terminator
vector (AnnotatedBinary.Foo.accounts):
+0x01B4 | 09 00 00 00 | uint32_t | 0x00000009 (9) | length of vector (# items)
+0x01B8 | 09 00 | uint16_t | 0x0009 (9) | value[0]
+0x01BA | 08 00 | uint16_t | 0x0008 (8) | value[1]
+0x01BC | 07 00 | uint16_t | 0x0007 (7) | value[2]
+0x01BE | 01 00 | uint16_t | 0x0001 (1) | value[3]
+0x01C0 | 02 00 | uint16_t | 0x0002 (2) | value[4]
+0x01C2 | 03 00 | uint16_t | 0x0003 (3) | value[5]
+0x01C4 | 06 00 | uint16_t | 0x0006 (6) | value[6]
+0x01C6 | 05 00 | uint16_t | 0x0005 (5) | value[7]
+0x01C8 | 04 00 | uint16_t | 0x0004 (4) | value[8]
unknown (no known references):
+0x01CA | 00 00 3A FF FF FF 00 00 | ?uint8_t[10] | ..:..... | WARN: nothing refers to this section.
+0x01D2 | 00 03 | | ..
vector (AnnotatedBinary.Foo.bars):
+0x01D4 | 02 00 00 00 | uint32_t | 0x00000002 (2) | length of vector (# items)
+0x01D8 | 44 00 00 00 | UOffset32 | 0x00000044 (68) Loc: +0x021C | offset to table[0]
+0x01DC | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x01EC | offset to table[1]
padding:
+0x01E0 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Bar):
+0x01E2 | 0A 00 | uint16_t | 0x000A (10) | size of this vtable
+0x01E4 | 1A 00 | uint16_t | 0x001A (26) | size of referring table
+0x01E6 | 0C 00 | VOffset16 | 0x000C (12) | offset to field `a` (id: 0)
+0x01E8 | 04 00 | VOffset16 | 0x0004 (4) | offset to field `b` (id: 1)
+0x01EA | 08 00 | VOffset16 | 0x0008 (8) | offset to field `c` (id: 2)
table (AnnotatedBinary.Bar):
+0x01EC | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x01E2 | offset to vtable
+0x01F0 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float)
+0x01F4 | 18 00 00 00 | UOffset32 | 0x00000018 (24) Loc: +0x020C | offset to field `c` (table)
+0x01F8 | 00 00 00 00 00 D8 8E 40 | double | 0x408ED80000000000 (987.000000) | table field `a` (Double)
+0x0200 | 00 00 00 00 00 00 | uint8_t[6] | ...... | padding
vtable (AnnotatedBinary.Baz):
+0x0206 | 06 00 | uint16_t | 0x0006 (6) | size of this vtable
+0x0208 | 06 00 | uint16_t | 0x0006 (6) | size of referring table
+0x020A | 05 00 | VOffset16 | 0x0005 (5) | offset to field `meal` (id: 0)
table (AnnotatedBinary.Baz):
+0x020C | 06 00 00 00 | SOffset32 | 0x00000006 (6) Loc: +0x0206 | offset to vtable
+0x0210 | 00 | uint8_t[1] | . | padding
+0x0211 | 03 | uint8_t | 0x03 (3) | table field `meal` (Byte)
vtable (AnnotatedBinary.Bar):
+0x0212 | 0A 00 | uint16_t | 0x000A (10) | size of this vtable
+0x0214 | 18 00 | uint16_t | 0x0018 (24) | size of referring table
+0x0216 | 0C 00 | VOffset16 | 0x000C (12) | offset to field `a` (id: 0)
+0x0218 | 04 00 | VOffset16 | 0x0004 (4) | offset to field `b` (id: 1)
+0x021A | 08 00 | VOffset16 | 0x0008 (8) | offset to field `c` (id: 2)
table (AnnotatedBinary.Bar):
+0x021C | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x0212 | offset to vtable
+0x0220 | 00 00 E4 43 | float | 0x43E40000 (456.000000) | table field `b` (Float)
+0x0224 | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x0234 | offset to field `c` (table)
+0x0228 | 00 00 00 00 00 C0 5E 40 | double | 0x405EC00000000000 (123.000000) | table field `a` (Double)
+0x0230 | 00 00 00 00 | uint8_t[4] | .... | padding
table (AnnotatedBinary.Baz):
+0x0234 | A2 FF FF FF | SOffset32 | 0xFFFFFFA2 (-94) Loc: +0x0292 | offset to vtable
+0x0238 | 00 00 00 | uint8_t[3] | ... | padding
+0x023B | 01 | uint8_t | 0x01 (1) | table field `meal` (Byte)
string (AnnotatedBinary.Foo.name):
+0x023C | 2F 00 00 00 | uint32_t | 0x0000002F (47) | length of string
+0x0240 | 54 68 69 73 20 69 73 20 | char[47] | This is
+0x0248 | 61 20 6C 6F 6E 67 20 73 | | a long s
+0x0250 | 74 72 69 6E 67 20 74 6F | | tring to
+0x0258 | 20 73 68 6F 77 20 68 6F | | show ho
+0x0260 | 77 20 69 74 20 62 72 65 | | w it bre
+0x0268 | 61 6B 73 20 75 70 2E | | aks up.
+0x026F | 00 | char | 0x00 (0) | string terminator
padding:
+0x0270 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Bar):
+0x0272 | 0A 00 | uint16_t | 0x000A (10) | size of this vtable
+0x0274 | 16 00 | uint16_t | 0x0016 (22) | size of referring table
+0x0276 | 0C 00 | VOffset16 | 0x000C (12) | offset to field `a` (id: 0)
+0x0278 | 04 00 | VOffset16 | 0x0004 (4) | offset to field `b` (id: 1)
+0x027A | 08 00 | VOffset16 | 0x0008 (8) | offset to field `c` (id: 2)
table (AnnotatedBinary.Bar):
+0x027C | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x0272 | offset to vtable
+0x0280 | 65 20 71 49 | float | 0x49712065 (987654.312500) | table field `b` (Float)
+0x0284 | 14 00 00 00 | UOffset32 | 0x00000014 (20) Loc: +0x0298 | offset to field `c` (table)
+0x0288 | C9 76 BE 9F 0C 24 FE 40 | double | 0x40FE240C9FBE76C9 (123456.789000) | table field `a` (Double)
+0x0290 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Baz):
+0x0292 | 06 00 | uint16_t | 0x0006 (6) | size of this vtable
+0x0294 | 08 00 | uint16_t | 0x0008 (8) | size of referring table
+0x0296 | 07 00 | VOffset16 | 0x0007 (7) | offset to field `meal` (id: 0)
table (AnnotatedBinary.Baz):
+0x0298 | 06 00 00 00 | SOffset32 | 0x00000006 (6) Loc: +0x0292 | offset to vtable
+0x029C | 00 00 00 | uint8_t[3] | ... | padding
+0x029F | 01 | uint8_t | 0x01 (1) | table field `meal` (Byte)

View File

@@ -0,0 +1,140 @@
// Annotated Flatbuffer Binary
//
// Schema file: annotated_binary.fbs
// Binary file: tests/invalid_vector_length_cut_short.bin
header:
+0x0000 | 44 00 00 00 | UOffset32 | 0x00000044 (68) Loc: +0x0044 | offset to root table `AnnotatedBinary.Foo`
+0x0004 | 41 4E 4E 4F | char[4] | ANNO | File Identifier
padding:
+0x0008 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Foo):
+0x000A | 3A 00 | uint16_t | 0x003A (58) | size of this vtable
+0x000C | 68 00 | uint16_t | 0x0068 (104) | size of referring table
+0x000E | 0C 00 | VOffset16 | 0x000C (12) | offset to field `counter` (id: 0)
+0x0010 | 07 00 | VOffset16 | 0x0007 (7) | offset to field `healthy` (id: 1)
+0x0012 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `level` (id: 2) <defaults to 99> (Long)
+0x0014 | 08 00 | VOffset16 | 0x0008 (8) | offset to field `meal` (id: 3)
+0x0016 | 10 00 | VOffset16 | 0x0010 (16) | offset to field `bar` (id: 4)
+0x0018 | 14 00 | VOffset16 | 0x0014 (20) | offset to field `home` (id: 5)
+0x001A | 30 00 | VOffset16 | 0x0030 (48) | offset to field `name` (id: 6)
+0x001C | 34 00 | VOffset16 | 0x0034 (52) | offset to field `bars` (id: 7)
+0x001E | 09 00 | VOffset16 | 0x0009 (9) | offset to field `bar_baz_type` (id: 8)
+0x0020 | 38 00 | VOffset16 | 0x0038 (56) | offset to field `bar_baz` (id: 9)
+0x0022 | 3C 00 | VOffset16 | 0x003C (60) | offset to field `accounts` (id: 10)
+0x0024 | 40 00 | VOffset16 | 0x0040 (64) | offset to field `bob` (id: 11)
+0x0026 | 44 00 | VOffset16 | 0x0044 (68) | offset to field `alice` (id: 12)
+0x0028 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `maybe_i32` (id: 13) <defaults to 0> (Int)
+0x002A | 00 00 | VOffset16 | 0x0000 (0) | offset to field `default_i32` (id: 14) <defaults to 42> (Int)
+0x002C | 48 00 | VOffset16 | 0x0048 (72) | offset to field `just_i32` (id: 15)
+0x002E | 4C 00 | VOffset16 | 0x004C (76) | offset to field `names` (id: 16)
+0x0030 | 50 00 | VOffset16 | 0x0050 (80) | offset to field `points_of_interest` (id: 17)
+0x0032 | 54 00 | VOffset16 | 0x0054 (84) | offset to field `foobars_type` (id: 18)
+0x0034 | 58 00 | VOffset16 | 0x0058 (88) | offset to field `foobars` (id: 19)
+0x0036 | 0A 00 | VOffset16 | 0x000A (10) | offset to field `measurement_type` (id: 20)
+0x0038 | 5C 00 | VOffset16 | 0x005C (92) | offset to field `measurement` (id: 21)
+0x003A | 0B 00 | VOffset16 | 0x000B (11) | offset to field `anything_type` (id: 22)
+0x003C | 60 00 | VOffset16 | 0x0060 (96) | offset to field `anything` (id: 23)
+0x003E | 00 00 | VOffset16 | 0x0000 (0) | offset to field `temperature` (id: 24) <defaults to 98.600000> (Float)
+0x0040 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `teetotaler` (id: 25) <null> (Obj)
+0x0042 | 64 00 | VOffset16 | 0x0064 (100) | offset to field `charlie` (id: 26)
root_table (AnnotatedBinary.Foo):
+0x0044 | 3A 00 00 00 | SOffset32 | 0x0000003A (58) Loc: +0x000A | offset to vtable
+0x0048 | 00 00 00 | uint8_t[3] | ... | padding
+0x004B | 01 | uint8_t | 0x01 (1) | table field `healthy` (Bool)
+0x004C | 02 | uint8_t | 0x02 (2) | table field `meal` (Byte)
+0x004D | 02 | UType8 | 0x02 (2) | table field `bar_baz_type` (UType)
+0x004E | 01 | UType8 | 0x01 (1) | table field `measurement_type` (UType)
+0x004F | 01 | UType8 | 0x01 (1) | table field `anything_type` (UType)
+0x0050 | D2 04 00 00 | uint32_t | 0x000004D2 (1234) | table field `counter` (Int)
+0x0054 | 28 02 00 00 | UOffset32 | 0x00000228 (552) Loc: +0x027C | ERROR: offset to field `bar`. Location is outside the binary.
+0x0058 | 01 00 00 00 | uint32_t | 0x00000001 (1) | struct field `AnnotatedBinary.Building.floors` (Int)
+0x005C | 02 00 00 00 | uint32_t | 0x00000002 (2) | struct field `AnnotatedBinary.Building.doors` (Int)
+0x0060 | 0C 00 00 00 | uint32_t | 0x0000000C (12) | struct field `AnnotatedBinary.Building.windows` (Int)
+0x0064 | 0A 00 00 00 | uint32_t | 0x0000000A (10) | array field `AnnotatedBinary.Dimension.values[0]` (Int)
+0x0068 | 0C 00 00 00 | uint32_t | 0x0000000C (12) | array field `AnnotatedBinary.Dimension.values[1]` (Int)
+0x006C | 14 00 00 00 | uint32_t | 0x00000014 (20) | array field `AnnotatedBinary.Dimension.values[2]` (Int)
+0x0070 | 01 | uint8_t | 0x01 (1) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
+0x0071 | 02 | uint8_t | 0x02 (2) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
+0x0072 | 03 | uint8_t | 0x03 (3) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
+0x0073 | 00 | uint8_t[1] | . | padding
+0x0074 | C8 01 00 00 | UOffset32 | 0x000001C8 (456) Loc: +0x023C | ERROR: offset to field `name`. Location is outside the binary.
+0x0078 | 5C 01 00 00 | UOffset32 | 0x0000015C (348) Loc: +0x01D4 | ERROR: offset to field `bars`. Location is outside the binary.
+0x007C | 50 01 00 00 | UOffset32 | 0x00000150 (336) Loc: +0x01CC | ERROR: offset to field `bar_baz`. Location is outside the binary.
+0x0080 | 34 01 00 00 | UOffset32 | 0x00000134 (308) Loc: +0x01B4 | ERROR: offset to field `accounts`. Location is outside the binary.
+0x0084 | 24 01 00 00 | UOffset32 | 0x00000124 (292) Loc: +0x01A8 | ERROR: offset to field `bob`. Location is outside the binary.
+0x0088 | 14 01 00 00 | UOffset32 | 0x00000114 (276) Loc: +0x019C | ERROR: offset to field `alice`. Location is outside the binary.
+0x008C | 0D 00 00 00 | uint32_t | 0x0000000D (13) | table field `just_i32` (Int)
+0x0090 | DC 00 00 00 | UOffset32 | 0x000000DC (220) Loc: +0x016C | ERROR: offset to field `names`. Location is outside the binary.
+0x0094 | A0 00 00 00 | UOffset32 | 0x000000A0 (160) Loc: +0x0134 | offset to field `points_of_interest` (vector)
+0x0098 | 94 00 00 00 | UOffset32 | 0x00000094 (148) Loc: +0x012C | offset to field `foobars_type` (vector)
+0x009C | 38 00 00 00 | UOffset32 | 0x00000038 (56) Loc: +0x00D4 | offset to field `foobars` (vector)
+0x00A0 | 33 00 00 00 | UOffset32 | 0x00000033 (51) Loc: +0x00D3 | offset to field `measurement` (union of type `Tolerance`)
+0x00A4 | 1C 00 00 00 | UOffset32 | 0x0000001C (28) Loc: +0x00C0 | offset to field `anything` (union of type `Bar`)
+0x00A8 | 04 00 00 00 | UOffset32 | 0x00000004 (4) Loc: +0x00AC | offset to field `charlie` (string)
string (AnnotatedBinary.Foo.charlie):
+0x00AC | 05 00 00 00 | uint32_t | 0x00000005 (5) | length of string
+0x00B0 | 61 6C 69 63 65 | char[5] | alice
+0x00B5 | 00 | char | 0x00 (0) | string terminator
padding:
+0x00B6 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Bar):
+0x00B8 | 08 00 | uint16_t | 0x0008 (8) | size of this vtable
+0x00BA | 13 00 | uint16_t | 0x0013 (19) | size of referring table
+0x00BC | 08 00 | VOffset16 | 0x0008 (8) | offset to field `a` (id: 0)
+0x00BE | 04 00 | VOffset16 | 0x0004 (4) | offset to field `b` (id: 1)
table (AnnotatedBinary.Bar):
+0x00C0 | 08 00 00 00 | SOffset32 | 0x00000008 (8) Loc: +0x00B8 | offset to vtable
+0x00C4 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float)
+0x00C8 | 00 00 00 00 00 10 74 40 | double | 0x4074100000000000 (321.000000) | table field `a` (Double)
+0x00D0 | 00 00 00 | uint8_t[3] | ... | padding
union (AnnotatedBinary.Tolerance.measurement):
+0x00D3 | 05 | uint8_t | 0x05 (5) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
vector (AnnotatedBinary.Foo.foobars):
+0x00D4 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x00D8 | 34 00 00 00 | UOffset32 | 0x00000034 (52) Loc: +0x010C | offset to union[0] (`Bar`)
+0x00DC | 2C 00 00 00 | UOffset32 | 0x0000002C (44) Loc: +0x0108 | offset to union[1] (`Baz`)
+0x00E0 | 04 00 00 00 | UOffset32 | 0x00000004 (4) Loc: +0x00E4 | offset to union[2] (`Bar`)
table (AnnotatedBinary.Bar):
+0x00E4 | D2 FE FF FF | SOffset32 | 0xFFFFFED2 (-302) Loc: +0x0212 | ERROR: offset to vtable. Invalid offset, points to outside the binary.
unknown (no known references):
+0x00E8 | 00 80 23 44 10 00 00 00 | ?uint8_t[28] | ..#D.... | WARN: nothing refers to this section.
+0x00F0 | 00 00 00 00 00 D8 8E 40 | | .......@
+0x00F8 | 00 00 00 00 6A FE FF FF | | ....j...
+0x0100 | 00 00 00 03 | | ....
vtable (AnnotatedBinary.Baz):
+0x0104 | 04 00 | uint16_t | 0x0004 (4) | size of this vtable
+0x0106 | 04 00 | uint16_t | 0x0004 (4) | size of referring table
table (AnnotatedBinary.Baz):
+0x0108 | 04 00 00 00 | SOffset32 | 0x00000004 (4) Loc: +0x0104 | offset to vtable
table (AnnotatedBinary.Bar):
+0x010C | FA FE FF FF | SOffset32 | 0xFFFFFEFA (-262) Loc: +0x0212 | ERROR: offset to vtable. Invalid offset, points to outside the binary.
unknown (no known references):
+0x0110 | 00 00 E4 43 10 00 00 00 | ?uint8_t[28] | ...C.... | WARN: nothing refers to this section.
+0x0118 | 00 00 00 00 00 C0 5E 40 | | ......^@
+0x0120 | 00 00 00 00 92 FE FF FF | | ........
+0x0128 | 00 00 00 01 | | ....
vector (AnnotatedBinary.Foo.foobars_type):
+0x012C | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x0130 | 01 | UType8 | 0x01 (1) | value[0]
+0x0131 | 02 | UType8 | 0x02 (2) | value[1]
+0x0132 | 01 | UType8 | 0x01 (1) | value[2]
vector (AnnotatedBinary.Foo.points_of_interest):
+0x0134 | 03 00 | ?uint8_t[2] | .. | ERROR: length of vector (# items). Incomplete binary, expected to read 4 bytes here

View File

@@ -0,0 +1,191 @@
// Annotated Flatbuffer Binary
//
// Schema file: annotated_binary.fbs
// Binary file: tests/invalid_vector_scalars_cut_short.bin
header:
+0x0000 | 44 00 00 00 | UOffset32 | 0x00000044 (68) Loc: +0x0044 | offset to root table `AnnotatedBinary.Foo`
+0x0004 | 41 4E 4E 4F | char[4] | ANNO | File Identifier
padding:
+0x0008 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Foo):
+0x000A | 3A 00 | uint16_t | 0x003A (58) | size of this vtable
+0x000C | 68 00 | uint16_t | 0x0068 (104) | size of referring table
+0x000E | 0C 00 | VOffset16 | 0x000C (12) | offset to field `counter` (id: 0)
+0x0010 | 07 00 | VOffset16 | 0x0007 (7) | offset to field `healthy` (id: 1)
+0x0012 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `level` (id: 2) <defaults to 99> (Long)
+0x0014 | 08 00 | VOffset16 | 0x0008 (8) | offset to field `meal` (id: 3)
+0x0016 | 10 00 | VOffset16 | 0x0010 (16) | offset to field `bar` (id: 4)
+0x0018 | 14 00 | VOffset16 | 0x0014 (20) | offset to field `home` (id: 5)
+0x001A | 30 00 | VOffset16 | 0x0030 (48) | offset to field `name` (id: 6)
+0x001C | 34 00 | VOffset16 | 0x0034 (52) | offset to field `bars` (id: 7)
+0x001E | 09 00 | VOffset16 | 0x0009 (9) | offset to field `bar_baz_type` (id: 8)
+0x0020 | 38 00 | VOffset16 | 0x0038 (56) | offset to field `bar_baz` (id: 9)
+0x0022 | 3C 00 | VOffset16 | 0x003C (60) | offset to field `accounts` (id: 10)
+0x0024 | 40 00 | VOffset16 | 0x0040 (64) | offset to field `bob` (id: 11)
+0x0026 | 44 00 | VOffset16 | 0x0044 (68) | offset to field `alice` (id: 12)
+0x0028 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `maybe_i32` (id: 13) <defaults to 0> (Int)
+0x002A | 00 00 | VOffset16 | 0x0000 (0) | offset to field `default_i32` (id: 14) <defaults to 42> (Int)
+0x002C | 48 00 | VOffset16 | 0x0048 (72) | offset to field `just_i32` (id: 15)
+0x002E | 4C 00 | VOffset16 | 0x004C (76) | offset to field `names` (id: 16)
+0x0030 | 50 00 | VOffset16 | 0x0050 (80) | offset to field `points_of_interest` (id: 17)
+0x0032 | 54 00 | VOffset16 | 0x0054 (84) | offset to field `foobars_type` (id: 18)
+0x0034 | 58 00 | VOffset16 | 0x0058 (88) | offset to field `foobars` (id: 19)
+0x0036 | 0A 00 | VOffset16 | 0x000A (10) | offset to field `measurement_type` (id: 20)
+0x0038 | 5C 00 | VOffset16 | 0x005C (92) | offset to field `measurement` (id: 21)
+0x003A | 0B 00 | VOffset16 | 0x000B (11) | offset to field `anything_type` (id: 22)
+0x003C | 60 00 | VOffset16 | 0x0060 (96) | offset to field `anything` (id: 23)
+0x003E | 00 00 | VOffset16 | 0x0000 (0) | offset to field `temperature` (id: 24) <defaults to 98.600000> (Float)
+0x0040 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `teetotaler` (id: 25) <null> (Obj)
+0x0042 | 64 00 | VOffset16 | 0x0064 (100) | offset to field `charlie` (id: 26)
root_table (AnnotatedBinary.Foo):
+0x0044 | 3A 00 00 00 | SOffset32 | 0x0000003A (58) Loc: +0x000A | offset to vtable
+0x0048 | 00 00 00 | uint8_t[3] | ... | padding
+0x004B | 01 | uint8_t | 0x01 (1) | table field `healthy` (Bool)
+0x004C | 02 | uint8_t | 0x02 (2) | table field `meal` (Byte)
+0x004D | 02 | UType8 | 0x02 (2) | table field `bar_baz_type` (UType)
+0x004E | 01 | UType8 | 0x01 (1) | table field `measurement_type` (UType)
+0x004F | 01 | UType8 | 0x01 (1) | table field `anything_type` (UType)
+0x0050 | D2 04 00 00 | uint32_t | 0x000004D2 (1234) | table field `counter` (Int)
+0x0054 | 28 02 00 00 | UOffset32 | 0x00000228 (552) Loc: +0x027C | ERROR: offset to field `bar`. Location is outside the binary.
+0x0058 | 01 00 00 00 | uint32_t | 0x00000001 (1) | struct field `AnnotatedBinary.Building.floors` (Int)
+0x005C | 02 00 00 00 | uint32_t | 0x00000002 (2) | struct field `AnnotatedBinary.Building.doors` (Int)
+0x0060 | 0C 00 00 00 | uint32_t | 0x0000000C (12) | struct field `AnnotatedBinary.Building.windows` (Int)
+0x0064 | 0A 00 00 00 | uint32_t | 0x0000000A (10) | array field `AnnotatedBinary.Dimension.values[0]` (Int)
+0x0068 | 0C 00 00 00 | uint32_t | 0x0000000C (12) | array field `AnnotatedBinary.Dimension.values[1]` (Int)
+0x006C | 14 00 00 00 | uint32_t | 0x00000014 (20) | array field `AnnotatedBinary.Dimension.values[2]` (Int)
+0x0070 | 01 | uint8_t | 0x01 (1) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
+0x0071 | 02 | uint8_t | 0x02 (2) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
+0x0072 | 03 | uint8_t | 0x03 (3) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
+0x0073 | 00 | uint8_t[1] | . | padding
+0x0074 | C8 01 00 00 | UOffset32 | 0x000001C8 (456) Loc: +0x023C | ERROR: offset to field `name`. Location is outside the binary.
+0x0078 | 5C 01 00 00 | UOffset32 | 0x0000015C (348) Loc: +0x01D4 | ERROR: offset to field `bars`. Location is outside the binary.
+0x007C | 50 01 00 00 | UOffset32 | 0x00000150 (336) Loc: +0x01CC | ERROR: offset to field `bar_baz`. Location is outside the binary.
+0x0080 | 34 01 00 00 | UOffset32 | 0x00000134 (308) Loc: +0x01B4 | offset to field `accounts` (vector)
+0x0084 | 24 01 00 00 | UOffset32 | 0x00000124 (292) Loc: +0x01A8 | offset to field `bob` (string)
+0x0088 | 14 01 00 00 | UOffset32 | 0x00000114 (276) Loc: +0x019C | offset to field `alice` (string)
+0x008C | 0D 00 00 00 | uint32_t | 0x0000000D (13) | table field `just_i32` (Int)
+0x0090 | DC 00 00 00 | UOffset32 | 0x000000DC (220) Loc: +0x016C | offset to field `names` (vector)
+0x0094 | A0 00 00 00 | UOffset32 | 0x000000A0 (160) Loc: +0x0134 | offset to field `points_of_interest` (vector)
+0x0098 | 94 00 00 00 | UOffset32 | 0x00000094 (148) Loc: +0x012C | offset to field `foobars_type` (vector)
+0x009C | 38 00 00 00 | UOffset32 | 0x00000038 (56) Loc: +0x00D4 | offset to field `foobars` (vector)
+0x00A0 | 33 00 00 00 | UOffset32 | 0x00000033 (51) Loc: +0x00D3 | offset to field `measurement` (union of type `Tolerance`)
+0x00A4 | 1C 00 00 00 | UOffset32 | 0x0000001C (28) Loc: +0x00C0 | offset to field `anything` (union of type `Bar`)
+0x00A8 | 04 00 00 00 | UOffset32 | 0x00000004 (4) Loc: +0x00AC | offset to field `charlie` (string)
string (AnnotatedBinary.Foo.charlie):
+0x00AC | 05 00 00 00 | uint32_t | 0x00000005 (5) | length of string
+0x00B0 | 61 6C 69 63 65 | char[5] | alice
+0x00B5 | 00 | char | 0x00 (0) | string terminator
padding:
+0x00B6 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Bar):
+0x00B8 | 08 00 | uint16_t | 0x0008 (8) | size of this vtable
+0x00BA | 13 00 | uint16_t | 0x0013 (19) | size of referring table
+0x00BC | 08 00 | VOffset16 | 0x0008 (8) | offset to field `a` (id: 0)
+0x00BE | 04 00 | VOffset16 | 0x0004 (4) | offset to field `b` (id: 1)
table (AnnotatedBinary.Bar):
+0x00C0 | 08 00 00 00 | SOffset32 | 0x00000008 (8) Loc: +0x00B8 | offset to vtable
+0x00C4 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float)
+0x00C8 | 00 00 00 00 00 10 74 40 | double | 0x4074100000000000 (321.000000) | table field `a` (Double)
+0x00D0 | 00 00 00 | uint8_t[3] | ... | padding
union (AnnotatedBinary.Tolerance.measurement):
+0x00D3 | 05 | uint8_t | 0x05 (5) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
vector (AnnotatedBinary.Foo.foobars):
+0x00D4 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x00D8 | 34 00 00 00 | UOffset32 | 0x00000034 (52) Loc: +0x010C | offset to union[0] (`Bar`)
+0x00DC | 2C 00 00 00 | UOffset32 | 0x0000002C (44) Loc: +0x0108 | offset to union[1] (`Baz`)
+0x00E0 | 04 00 00 00 | UOffset32 | 0x00000004 (4) Loc: +0x00E4 | offset to union[2] (`Bar`)
table (AnnotatedBinary.Bar):
+0x00E4 | D2 FE FF FF | SOffset32 | 0xFFFFFED2 (-302) Loc: +0x0212 | ERROR: offset to vtable. Invalid offset, points to outside the binary.
unknown (no known references):
+0x00E8 | 00 80 23 44 10 00 00 00 | ?uint8_t[28] | ..#D.... | WARN: nothing refers to this section.
+0x00F0 | 00 00 00 00 00 D8 8E 40 | | .......@
+0x00F8 | 00 00 00 00 6A FE FF FF | | ....j...
+0x0100 | 00 00 00 03 | | ....
vtable (AnnotatedBinary.Baz):
+0x0104 | 04 00 | uint16_t | 0x0004 (4) | size of this vtable
+0x0106 | 04 00 | uint16_t | 0x0004 (4) | size of referring table
table (AnnotatedBinary.Baz):
+0x0108 | 04 00 00 00 | SOffset32 | 0x00000004 (4) Loc: +0x0104 | offset to vtable
table (AnnotatedBinary.Bar):
+0x010C | FA FE FF FF | SOffset32 | 0xFFFFFEFA (-262) Loc: +0x0212 | ERROR: offset to vtable. Invalid offset, points to outside the binary.
unknown (no known references):
+0x0110 | 00 00 E4 43 10 00 00 00 | ?uint8_t[28] | ...C.... | WARN: nothing refers to this section.
+0x0118 | 00 00 00 00 00 C0 5E 40 | | ......^@
+0x0120 | 00 00 00 00 92 FE FF FF | | ........
+0x0128 | 00 00 00 01 | | ....
vector (AnnotatedBinary.Foo.foobars_type):
+0x012C | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x0130 | 01 | UType8 | 0x01 (1) | value[0]
+0x0131 | 02 | UType8 | 0x02 (2) | value[1]
+0x0132 | 01 | UType8 | 0x01 (1) | value[2]
vector (AnnotatedBinary.Foo.points_of_interest):
+0x0134 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x0138 | 33 33 33 33 33 A3 45 40 | double | 0x4045A33333333333 (43.275000) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0140 | 7E 57 04 FF 5B 87 53 C0 | double | 0xC053875BFF04577E (-78.114990) | struct field `AnnotatedBinary.Location.longitude` (Double)
+0x0148 | 8D F0 F6 20 04 B6 42 40 | double | 0x4042B60420F6F08D (37.422001) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0150 | 9F 77 63 41 61 85 5E C0 | double | 0xC05E85614163779F (-122.084061) | struct field `AnnotatedBinary.Location.longitude` (Double)
+0x0158 | 8F 35 23 83 DC 35 4B C0 | double | 0xC04B35DC8323358F (-54.420792) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0160 | F6 97 DD 93 87 C5 0A 40 | double | 0x400AC58793DD97F6 (3.346450) | struct field `AnnotatedBinary.Location.longitude` (Double)
padding:
+0x0168 | 00 00 00 00 | uint8_t[4] | .... | padding
vector (AnnotatedBinary.Foo.names):
+0x016C | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x0170 | 20 00 00 00 | UOffset32 | 0x00000020 (32) Loc: +0x0190 | offset to string[0]
+0x0174 | 14 00 00 00 | UOffset32 | 0x00000014 (20) Loc: +0x0188 | offset to string[1]
+0x0178 | 04 00 00 00 | UOffset32 | 0x00000004 (4) Loc: +0x017C | offset to string[2]
string (AnnotatedBinary.Foo.names):
+0x017C | 07 00 00 00 | uint32_t | 0x00000007 (7) | length of string
+0x0180 | 63 68 61 72 6C 69 65 | char[7] | charlie
+0x0187 | 00 | char | 0x00 (0) | string terminator
string (AnnotatedBinary.Foo.names):
+0x0188 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of string
+0x018C | 62 6F 62 | char[3] | bob
+0x018F | 00 | char | 0x00 (0) | string terminator
string (AnnotatedBinary.Foo.names):
+0x0190 | 05 00 00 00 | uint32_t | 0x00000005 (5) | length of string
+0x0194 | 61 6C 69 63 65 | char[5] | alice
+0x0199 | 00 | char | 0x00 (0) | string terminator
padding:
+0x019A | 00 00 | uint8_t[2] | .. | padding
string (AnnotatedBinary.Foo.alice):
+0x019C | 07 00 00 00 | uint32_t | 0x00000007 (7) | length of string
+0x01A0 | 63 68 61 72 6C 69 65 | char[7] | charlie
+0x01A7 | 00 | char | 0x00 (0) | string terminator
string (AnnotatedBinary.Foo.bob):
+0x01A8 | 07 00 00 00 | uint32_t | 0x00000007 (7) | length of string
+0x01AC | 63 68 61 72 6C 69 65 | char[7] | charlie
+0x01B3 | 00 | char | 0x00 (0) | string terminator
vector (AnnotatedBinary.Foo.accounts):
+0x01B4 | 09 00 00 00 | uint32_t | 0x00000009 (9) | length of vector (# items)
+0x01B8 | 09 00 | uint16_t | 0x0009 (9) | value[0]
+0x01BA | 08 00 | uint16_t | 0x0008 (8) | value[1]
+0x01BC | 07 00 | uint16_t | 0x0007 (7) | value[2]
+0x01BE | 01 00 | uint16_t | 0x0001 (1) | value[3]
+0x01C0 | 02 | ?uint8_t[1] | . | ERROR: value[4]. Incomplete binary, expected to read 2 bytes here

View File

@@ -0,0 +1,154 @@
// Annotated Flatbuffer Binary
//
// Schema file: annotated_binary.fbs
// Binary file: tests/invalid_vector_strings_cut_short.bin
header:
+0x0000 | 44 00 00 00 | UOffset32 | 0x00000044 (68) Loc: +0x0044 | offset to root table `AnnotatedBinary.Foo`
+0x0004 | 41 4E 4E 4F | char[4] | ANNO | File Identifier
padding:
+0x0008 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Foo):
+0x000A | 3A 00 | uint16_t | 0x003A (58) | size of this vtable
+0x000C | 68 00 | uint16_t | 0x0068 (104) | size of referring table
+0x000E | 0C 00 | VOffset16 | 0x000C (12) | offset to field `counter` (id: 0)
+0x0010 | 07 00 | VOffset16 | 0x0007 (7) | offset to field `healthy` (id: 1)
+0x0012 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `level` (id: 2) <defaults to 99> (Long)
+0x0014 | 08 00 | VOffset16 | 0x0008 (8) | offset to field `meal` (id: 3)
+0x0016 | 10 00 | VOffset16 | 0x0010 (16) | offset to field `bar` (id: 4)
+0x0018 | 14 00 | VOffset16 | 0x0014 (20) | offset to field `home` (id: 5)
+0x001A | 30 00 | VOffset16 | 0x0030 (48) | offset to field `name` (id: 6)
+0x001C | 34 00 | VOffset16 | 0x0034 (52) | offset to field `bars` (id: 7)
+0x001E | 09 00 | VOffset16 | 0x0009 (9) | offset to field `bar_baz_type` (id: 8)
+0x0020 | 38 00 | VOffset16 | 0x0038 (56) | offset to field `bar_baz` (id: 9)
+0x0022 | 3C 00 | VOffset16 | 0x003C (60) | offset to field `accounts` (id: 10)
+0x0024 | 40 00 | VOffset16 | 0x0040 (64) | offset to field `bob` (id: 11)
+0x0026 | 44 00 | VOffset16 | 0x0044 (68) | offset to field `alice` (id: 12)
+0x0028 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `maybe_i32` (id: 13) <defaults to 0> (Int)
+0x002A | 00 00 | VOffset16 | 0x0000 (0) | offset to field `default_i32` (id: 14) <defaults to 42> (Int)
+0x002C | 48 00 | VOffset16 | 0x0048 (72) | offset to field `just_i32` (id: 15)
+0x002E | 4C 00 | VOffset16 | 0x004C (76) | offset to field `names` (id: 16)
+0x0030 | 50 00 | VOffset16 | 0x0050 (80) | offset to field `points_of_interest` (id: 17)
+0x0032 | 54 00 | VOffset16 | 0x0054 (84) | offset to field `foobars_type` (id: 18)
+0x0034 | 58 00 | VOffset16 | 0x0058 (88) | offset to field `foobars` (id: 19)
+0x0036 | 0A 00 | VOffset16 | 0x000A (10) | offset to field `measurement_type` (id: 20)
+0x0038 | 5C 00 | VOffset16 | 0x005C (92) | offset to field `measurement` (id: 21)
+0x003A | 0B 00 | VOffset16 | 0x000B (11) | offset to field `anything_type` (id: 22)
+0x003C | 60 00 | VOffset16 | 0x0060 (96) | offset to field `anything` (id: 23)
+0x003E | 00 00 | VOffset16 | 0x0000 (0) | offset to field `temperature` (id: 24) <defaults to 98.600000> (Float)
+0x0040 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `teetotaler` (id: 25) <null> (Obj)
+0x0042 | 64 00 | VOffset16 | 0x0064 (100) | offset to field `charlie` (id: 26)
root_table (AnnotatedBinary.Foo):
+0x0044 | 3A 00 00 00 | SOffset32 | 0x0000003A (58) Loc: +0x000A | offset to vtable
+0x0048 | 00 00 00 | uint8_t[3] | ... | padding
+0x004B | 01 | uint8_t | 0x01 (1) | table field `healthy` (Bool)
+0x004C | 02 | uint8_t | 0x02 (2) | table field `meal` (Byte)
+0x004D | 02 | UType8 | 0x02 (2) | table field `bar_baz_type` (UType)
+0x004E | 01 | UType8 | 0x01 (1) | table field `measurement_type` (UType)
+0x004F | 01 | UType8 | 0x01 (1) | table field `anything_type` (UType)
+0x0050 | D2 04 00 00 | uint32_t | 0x000004D2 (1234) | table field `counter` (Int)
+0x0054 | 28 02 00 00 | UOffset32 | 0x00000228 (552) Loc: +0x027C | ERROR: offset to field `bar`. Location is outside the binary.
+0x0058 | 01 00 00 00 | uint32_t | 0x00000001 (1) | struct field `AnnotatedBinary.Building.floors` (Int)
+0x005C | 02 00 00 00 | uint32_t | 0x00000002 (2) | struct field `AnnotatedBinary.Building.doors` (Int)
+0x0060 | 0C 00 00 00 | uint32_t | 0x0000000C (12) | struct field `AnnotatedBinary.Building.windows` (Int)
+0x0064 | 0A 00 00 00 | uint32_t | 0x0000000A (10) | array field `AnnotatedBinary.Dimension.values[0]` (Int)
+0x0068 | 0C 00 00 00 | uint32_t | 0x0000000C (12) | array field `AnnotatedBinary.Dimension.values[1]` (Int)
+0x006C | 14 00 00 00 | uint32_t | 0x00000014 (20) | array field `AnnotatedBinary.Dimension.values[2]` (Int)
+0x0070 | 01 | uint8_t | 0x01 (1) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
+0x0071 | 02 | uint8_t | 0x02 (2) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
+0x0072 | 03 | uint8_t | 0x03 (3) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
+0x0073 | 00 | uint8_t[1] | . | padding
+0x0074 | C8 01 00 00 | UOffset32 | 0x000001C8 (456) Loc: +0x023C | ERROR: offset to field `name`. Location is outside the binary.
+0x0078 | 5C 01 00 00 | UOffset32 | 0x0000015C (348) Loc: +0x01D4 | ERROR: offset to field `bars`. Location is outside the binary.
+0x007C | 50 01 00 00 | UOffset32 | 0x00000150 (336) Loc: +0x01CC | ERROR: offset to field `bar_baz`. Location is outside the binary.
+0x0080 | 34 01 00 00 | UOffset32 | 0x00000134 (308) Loc: +0x01B4 | ERROR: offset to field `accounts`. Location is outside the binary.
+0x0084 | 24 01 00 00 | UOffset32 | 0x00000124 (292) Loc: +0x01A8 | ERROR: offset to field `bob`. Location is outside the binary.
+0x0088 | 14 01 00 00 | UOffset32 | 0x00000114 (276) Loc: +0x019C | ERROR: offset to field `alice`. Location is outside the binary.
+0x008C | 0D 00 00 00 | uint32_t | 0x0000000D (13) | table field `just_i32` (Int)
+0x0090 | DC 00 00 00 | UOffset32 | 0x000000DC (220) Loc: +0x016C | offset to field `names` (vector)
+0x0094 | A0 00 00 00 | UOffset32 | 0x000000A0 (160) Loc: +0x0134 | offset to field `points_of_interest` (vector)
+0x0098 | 94 00 00 00 | UOffset32 | 0x00000094 (148) Loc: +0x012C | offset to field `foobars_type` (vector)
+0x009C | 38 00 00 00 | UOffset32 | 0x00000038 (56) Loc: +0x00D4 | offset to field `foobars` (vector)
+0x00A0 | 33 00 00 00 | UOffset32 | 0x00000033 (51) Loc: +0x00D3 | offset to field `measurement` (union of type `Tolerance`)
+0x00A4 | 1C 00 00 00 | UOffset32 | 0x0000001C (28) Loc: +0x00C0 | offset to field `anything` (union of type `Bar`)
+0x00A8 | 04 00 00 00 | UOffset32 | 0x00000004 (4) Loc: +0x00AC | offset to field `charlie` (string)
string (AnnotatedBinary.Foo.charlie):
+0x00AC | 05 00 00 00 | uint32_t | 0x00000005 (5) | length of string
+0x00B0 | 61 6C 69 63 65 | char[5] | alice
+0x00B5 | 00 | char | 0x00 (0) | string terminator
padding:
+0x00B6 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Bar):
+0x00B8 | 08 00 | uint16_t | 0x0008 (8) | size of this vtable
+0x00BA | 13 00 | uint16_t | 0x0013 (19) | size of referring table
+0x00BC | 08 00 | VOffset16 | 0x0008 (8) | offset to field `a` (id: 0)
+0x00BE | 04 00 | VOffset16 | 0x0004 (4) | offset to field `b` (id: 1)
table (AnnotatedBinary.Bar):
+0x00C0 | 08 00 00 00 | SOffset32 | 0x00000008 (8) Loc: +0x00B8 | offset to vtable
+0x00C4 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float)
+0x00C8 | 00 00 00 00 00 10 74 40 | double | 0x4074100000000000 (321.000000) | table field `a` (Double)
+0x00D0 | 00 00 00 | uint8_t[3] | ... | padding
union (AnnotatedBinary.Tolerance.measurement):
+0x00D3 | 05 | uint8_t | 0x05 (5) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
vector (AnnotatedBinary.Foo.foobars):
+0x00D4 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x00D8 | 34 00 00 00 | UOffset32 | 0x00000034 (52) Loc: +0x010C | offset to union[0] (`Bar`)
+0x00DC | 2C 00 00 00 | UOffset32 | 0x0000002C (44) Loc: +0x0108 | offset to union[1] (`Baz`)
+0x00E0 | 04 00 00 00 | UOffset32 | 0x00000004 (4) Loc: +0x00E4 | offset to union[2] (`Bar`)
table (AnnotatedBinary.Bar):
+0x00E4 | D2 FE FF FF | SOffset32 | 0xFFFFFED2 (-302) Loc: +0x0212 | ERROR: offset to vtable. Invalid offset, points to outside the binary.
unknown (no known references):
+0x00E8 | 00 80 23 44 10 00 00 00 | ?uint8_t[28] | ..#D.... | WARN: nothing refers to this section.
+0x00F0 | 00 00 00 00 00 D8 8E 40 | | .......@
+0x00F8 | 00 00 00 00 6A FE FF FF | | ....j...
+0x0100 | 00 00 00 03 | | ....
vtable (AnnotatedBinary.Baz):
+0x0104 | 04 00 | uint16_t | 0x0004 (4) | size of this vtable
+0x0106 | 04 00 | uint16_t | 0x0004 (4) | size of referring table
table (AnnotatedBinary.Baz):
+0x0108 | 04 00 00 00 | SOffset32 | 0x00000004 (4) Loc: +0x0104 | offset to vtable
table (AnnotatedBinary.Bar):
+0x010C | FA FE FF FF | SOffset32 | 0xFFFFFEFA (-262) Loc: +0x0212 | ERROR: offset to vtable. Invalid offset, points to outside the binary.
unknown (no known references):
+0x0110 | 00 00 E4 43 10 00 00 00 | ?uint8_t[28] | ...C.... | WARN: nothing refers to this section.
+0x0118 | 00 00 00 00 00 C0 5E 40 | | ......^@
+0x0120 | 00 00 00 00 92 FE FF FF | | ........
+0x0128 | 00 00 00 01 | | ....
vector (AnnotatedBinary.Foo.foobars_type):
+0x012C | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x0130 | 01 | UType8 | 0x01 (1) | value[0]
+0x0131 | 02 | UType8 | 0x02 (2) | value[1]
+0x0132 | 01 | UType8 | 0x01 (1) | value[2]
vector (AnnotatedBinary.Foo.points_of_interest):
+0x0134 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x0138 | 33 33 33 33 33 A3 45 40 | double | 0x4045A33333333333 (43.275000) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0140 | 7E 57 04 FF 5B 87 53 C0 | double | 0xC053875BFF04577E (-78.114990) | struct field `AnnotatedBinary.Location.longitude` (Double)
+0x0148 | 8D F0 F6 20 04 B6 42 40 | double | 0x4042B60420F6F08D (37.422001) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0150 | 9F 77 63 41 61 85 5E C0 | double | 0xC05E85614163779F (-122.084061) | struct field `AnnotatedBinary.Location.longitude` (Double)
+0x0158 | 8F 35 23 83 DC 35 4B C0 | double | 0xC04B35DC8323358F (-54.420792) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0160 | F6 97 DD 93 87 C5 0A 40 | double | 0x400AC58793DD97F6 (3.346450) | struct field `AnnotatedBinary.Location.longitude` (Double)
padding:
+0x0168 | 00 00 00 00 | uint8_t[4] | .... | padding
vector (AnnotatedBinary.Foo.names):
+0x016C | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x0170 | 20 00 00 00 | UOffset32 | 0x00000020 (32) Loc: +0x0190 | ERROR: offset to string[0]. Invalid offset, points to outside the binary.
+0x0174 | 14 00 | ?uint8_t[2] | .. | ERROR: offset to string[1]. Incomplete binary, expected to read 4 bytes here

View File

@@ -0,0 +1,144 @@
// Annotated Flatbuffer Binary
//
// Schema file: annotated_binary.fbs
// Binary file: tests/invalid_vector_structs_cut_short.bin
header:
+0x0000 | 44 00 00 00 | UOffset32 | 0x00000044 (68) Loc: +0x0044 | offset to root table `AnnotatedBinary.Foo`
+0x0004 | 41 4E 4E 4F | char[4] | ANNO | File Identifier
padding:
+0x0008 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Foo):
+0x000A | 3A 00 | uint16_t | 0x003A (58) | size of this vtable
+0x000C | 68 00 | uint16_t | 0x0068 (104) | size of referring table
+0x000E | 0C 00 | VOffset16 | 0x000C (12) | offset to field `counter` (id: 0)
+0x0010 | 07 00 | VOffset16 | 0x0007 (7) | offset to field `healthy` (id: 1)
+0x0012 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `level` (id: 2) <defaults to 99> (Long)
+0x0014 | 08 00 | VOffset16 | 0x0008 (8) | offset to field `meal` (id: 3)
+0x0016 | 10 00 | VOffset16 | 0x0010 (16) | offset to field `bar` (id: 4)
+0x0018 | 14 00 | VOffset16 | 0x0014 (20) | offset to field `home` (id: 5)
+0x001A | 30 00 | VOffset16 | 0x0030 (48) | offset to field `name` (id: 6)
+0x001C | 34 00 | VOffset16 | 0x0034 (52) | offset to field `bars` (id: 7)
+0x001E | 09 00 | VOffset16 | 0x0009 (9) | offset to field `bar_baz_type` (id: 8)
+0x0020 | 38 00 | VOffset16 | 0x0038 (56) | offset to field `bar_baz` (id: 9)
+0x0022 | 3C 00 | VOffset16 | 0x003C (60) | offset to field `accounts` (id: 10)
+0x0024 | 40 00 | VOffset16 | 0x0040 (64) | offset to field `bob` (id: 11)
+0x0026 | 44 00 | VOffset16 | 0x0044 (68) | offset to field `alice` (id: 12)
+0x0028 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `maybe_i32` (id: 13) <defaults to 0> (Int)
+0x002A | 00 00 | VOffset16 | 0x0000 (0) | offset to field `default_i32` (id: 14) <defaults to 42> (Int)
+0x002C | 48 00 | VOffset16 | 0x0048 (72) | offset to field `just_i32` (id: 15)
+0x002E | 4C 00 | VOffset16 | 0x004C (76) | offset to field `names` (id: 16)
+0x0030 | 50 00 | VOffset16 | 0x0050 (80) | offset to field `points_of_interest` (id: 17)
+0x0032 | 54 00 | VOffset16 | 0x0054 (84) | offset to field `foobars_type` (id: 18)
+0x0034 | 58 00 | VOffset16 | 0x0058 (88) | offset to field `foobars` (id: 19)
+0x0036 | 0A 00 | VOffset16 | 0x000A (10) | offset to field `measurement_type` (id: 20)
+0x0038 | 5C 00 | VOffset16 | 0x005C (92) | offset to field `measurement` (id: 21)
+0x003A | 0B 00 | VOffset16 | 0x000B (11) | offset to field `anything_type` (id: 22)
+0x003C | 60 00 | VOffset16 | 0x0060 (96) | offset to field `anything` (id: 23)
+0x003E | 00 00 | VOffset16 | 0x0000 (0) | offset to field `temperature` (id: 24) <defaults to 98.600000> (Float)
+0x0040 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `teetotaler` (id: 25) <null> (Obj)
+0x0042 | 64 00 | VOffset16 | 0x0064 (100) | offset to field `charlie` (id: 26)
root_table (AnnotatedBinary.Foo):
+0x0044 | 3A 00 00 00 | SOffset32 | 0x0000003A (58) Loc: +0x000A | offset to vtable
+0x0048 | 00 00 00 | uint8_t[3] | ... | padding
+0x004B | 01 | uint8_t | 0x01 (1) | table field `healthy` (Bool)
+0x004C | 02 | uint8_t | 0x02 (2) | table field `meal` (Byte)
+0x004D | 02 | UType8 | 0x02 (2) | table field `bar_baz_type` (UType)
+0x004E | 01 | UType8 | 0x01 (1) | table field `measurement_type` (UType)
+0x004F | 01 | UType8 | 0x01 (1) | table field `anything_type` (UType)
+0x0050 | D2 04 00 00 | uint32_t | 0x000004D2 (1234) | table field `counter` (Int)
+0x0054 | 28 02 00 00 | UOffset32 | 0x00000228 (552) Loc: +0x027C | ERROR: offset to field `bar`. Location is outside the binary.
+0x0058 | 01 00 00 00 | uint32_t | 0x00000001 (1) | struct field `AnnotatedBinary.Building.floors` (Int)
+0x005C | 02 00 00 00 | uint32_t | 0x00000002 (2) | struct field `AnnotatedBinary.Building.doors` (Int)
+0x0060 | 0C 00 00 00 | uint32_t | 0x0000000C (12) | struct field `AnnotatedBinary.Building.windows` (Int)
+0x0064 | 0A 00 00 00 | uint32_t | 0x0000000A (10) | array field `AnnotatedBinary.Dimension.values[0]` (Int)
+0x0068 | 0C 00 00 00 | uint32_t | 0x0000000C (12) | array field `AnnotatedBinary.Dimension.values[1]` (Int)
+0x006C | 14 00 00 00 | uint32_t | 0x00000014 (20) | array field `AnnotatedBinary.Dimension.values[2]` (Int)
+0x0070 | 01 | uint8_t | 0x01 (1) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
+0x0071 | 02 | uint8_t | 0x02 (2) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
+0x0072 | 03 | uint8_t | 0x03 (3) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
+0x0073 | 00 | uint8_t[1] | . | padding
+0x0074 | C8 01 00 00 | UOffset32 | 0x000001C8 (456) Loc: +0x023C | ERROR: offset to field `name`. Location is outside the binary.
+0x0078 | 5C 01 00 00 | UOffset32 | 0x0000015C (348) Loc: +0x01D4 | ERROR: offset to field `bars`. Location is outside the binary.
+0x007C | 50 01 00 00 | UOffset32 | 0x00000150 (336) Loc: +0x01CC | ERROR: offset to field `bar_baz`. Location is outside the binary.
+0x0080 | 34 01 00 00 | UOffset32 | 0x00000134 (308) Loc: +0x01B4 | ERROR: offset to field `accounts`. Location is outside the binary.
+0x0084 | 24 01 00 00 | UOffset32 | 0x00000124 (292) Loc: +0x01A8 | ERROR: offset to field `bob`. Location is outside the binary.
+0x0088 | 14 01 00 00 | UOffset32 | 0x00000114 (276) Loc: +0x019C | ERROR: offset to field `alice`. Location is outside the binary.
+0x008C | 0D 00 00 00 | uint32_t | 0x0000000D (13) | table field `just_i32` (Int)
+0x0090 | DC 00 00 00 | UOffset32 | 0x000000DC (220) Loc: +0x016C | ERROR: offset to field `names`. Location is outside the binary.
+0x0094 | A0 00 00 00 | UOffset32 | 0x000000A0 (160) Loc: +0x0134 | offset to field `points_of_interest` (vector)
+0x0098 | 94 00 00 00 | UOffset32 | 0x00000094 (148) Loc: +0x012C | offset to field `foobars_type` (vector)
+0x009C | 38 00 00 00 | UOffset32 | 0x00000038 (56) Loc: +0x00D4 | offset to field `foobars` (vector)
+0x00A0 | 33 00 00 00 | UOffset32 | 0x00000033 (51) Loc: +0x00D3 | offset to field `measurement` (union of type `Tolerance`)
+0x00A4 | 1C 00 00 00 | UOffset32 | 0x0000001C (28) Loc: +0x00C0 | offset to field `anything` (union of type `Bar`)
+0x00A8 | 04 00 00 00 | UOffset32 | 0x00000004 (4) Loc: +0x00AC | offset to field `charlie` (string)
string (AnnotatedBinary.Foo.charlie):
+0x00AC | 05 00 00 00 | uint32_t | 0x00000005 (5) | length of string
+0x00B0 | 61 6C 69 63 65 | char[5] | alice
+0x00B5 | 00 | char | 0x00 (0) | string terminator
padding:
+0x00B6 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Bar):
+0x00B8 | 08 00 | uint16_t | 0x0008 (8) | size of this vtable
+0x00BA | 13 00 | uint16_t | 0x0013 (19) | size of referring table
+0x00BC | 08 00 | VOffset16 | 0x0008 (8) | offset to field `a` (id: 0)
+0x00BE | 04 00 | VOffset16 | 0x0004 (4) | offset to field `b` (id: 1)
table (AnnotatedBinary.Bar):
+0x00C0 | 08 00 00 00 | SOffset32 | 0x00000008 (8) Loc: +0x00B8 | offset to vtable
+0x00C4 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float)
+0x00C8 | 00 00 00 00 00 10 74 40 | double | 0x4074100000000000 (321.000000) | table field `a` (Double)
+0x00D0 | 00 00 00 | uint8_t[3] | ... | padding
union (AnnotatedBinary.Tolerance.measurement):
+0x00D3 | 05 | uint8_t | 0x05 (5) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
vector (AnnotatedBinary.Foo.foobars):
+0x00D4 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x00D8 | 34 00 00 00 | UOffset32 | 0x00000034 (52) Loc: +0x010C | offset to union[0] (`Bar`)
+0x00DC | 2C 00 00 00 | UOffset32 | 0x0000002C (44) Loc: +0x0108 | offset to union[1] (`Baz`)
+0x00E0 | 04 00 00 00 | UOffset32 | 0x00000004 (4) Loc: +0x00E4 | offset to union[2] (`Bar`)
table (AnnotatedBinary.Bar):
+0x00E4 | D2 FE FF FF | SOffset32 | 0xFFFFFED2 (-302) Loc: +0x0212 | ERROR: offset to vtable. Invalid offset, points to outside the binary.
unknown (no known references):
+0x00E8 | 00 80 23 44 10 00 00 00 | ?uint8_t[28] | ..#D.... | WARN: nothing refers to this section.
+0x00F0 | 00 00 00 00 00 D8 8E 40 | | .......@
+0x00F8 | 00 00 00 00 6A FE FF FF | | ....j...
+0x0100 | 00 00 00 03 | | ....
vtable (AnnotatedBinary.Baz):
+0x0104 | 04 00 | uint16_t | 0x0004 (4) | size of this vtable
+0x0106 | 04 00 | uint16_t | 0x0004 (4) | size of referring table
table (AnnotatedBinary.Baz):
+0x0108 | 04 00 00 00 | SOffset32 | 0x00000004 (4) Loc: +0x0104 | offset to vtable
table (AnnotatedBinary.Bar):
+0x010C | FA FE FF FF | SOffset32 | 0xFFFFFEFA (-262) Loc: +0x0212 | ERROR: offset to vtable. Invalid offset, points to outside the binary.
unknown (no known references):
+0x0110 | 00 00 E4 43 10 00 00 00 | ?uint8_t[28] | ...C.... | WARN: nothing refers to this section.
+0x0118 | 00 00 00 00 00 C0 5E 40 | | ......^@
+0x0120 | 00 00 00 00 92 FE FF FF | | ........
+0x0128 | 00 00 00 01 | | ....
vector (AnnotatedBinary.Foo.foobars_type):
+0x012C | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x0130 | 01 | UType8 | 0x01 (1) | value[0]
+0x0131 | 02 | UType8 | 0x02 (2) | value[1]
+0x0132 | 01 | UType8 | 0x01 (1) | value[2]
vector (AnnotatedBinary.Foo.points_of_interest):
+0x0134 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x0138 | 33 33 33 33 33 A3 45 40 | double | 0x4045A33333333333 (43.275000) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0140 | 7E 57 04 FF 5B 87 53 C0 | double | 0xC053875BFF04577E (-78.114990) | struct field `AnnotatedBinary.Location.longitude` (Double)
+0x0148 | 8D F0 F6 20 04 B6 42 40 | double | 0x4042B60420F6F08D (37.422001) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0150 | 9F 77 63 41 | ?uint8_t[4] | .wcA | ERROR: struct field `AnnotatedBinary.Location.longitude` (Double). Expected to read 8 bytes.

View File

@@ -0,0 +1,209 @@
// Annotated Flatbuffer Binary
//
// Schema file: annotated_binary.fbs
// Binary file: tests/invalid_vector_tables_cut_short.bin
header:
+0x0000 | 44 00 00 00 | UOffset32 | 0x00000044 (68) Loc: +0x0044 | offset to root table `AnnotatedBinary.Foo`
+0x0004 | 41 4E 4E 4F | char[4] | ANNO | File Identifier
padding:
+0x0008 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Foo):
+0x000A | 3A 00 | uint16_t | 0x003A (58) | size of this vtable
+0x000C | 68 00 | uint16_t | 0x0068 (104) | size of referring table
+0x000E | 0C 00 | VOffset16 | 0x000C (12) | offset to field `counter` (id: 0)
+0x0010 | 07 00 | VOffset16 | 0x0007 (7) | offset to field `healthy` (id: 1)
+0x0012 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `level` (id: 2) <defaults to 99> (Long)
+0x0014 | 08 00 | VOffset16 | 0x0008 (8) | offset to field `meal` (id: 3)
+0x0016 | 10 00 | VOffset16 | 0x0010 (16) | offset to field `bar` (id: 4)
+0x0018 | 14 00 | VOffset16 | 0x0014 (20) | offset to field `home` (id: 5)
+0x001A | 30 00 | VOffset16 | 0x0030 (48) | offset to field `name` (id: 6)
+0x001C | 34 00 | VOffset16 | 0x0034 (52) | offset to field `bars` (id: 7)
+0x001E | 09 00 | VOffset16 | 0x0009 (9) | offset to field `bar_baz_type` (id: 8)
+0x0020 | 38 00 | VOffset16 | 0x0038 (56) | offset to field `bar_baz` (id: 9)
+0x0022 | 3C 00 | VOffset16 | 0x003C (60) | offset to field `accounts` (id: 10)
+0x0024 | 40 00 | VOffset16 | 0x0040 (64) | offset to field `bob` (id: 11)
+0x0026 | 44 00 | VOffset16 | 0x0044 (68) | offset to field `alice` (id: 12)
+0x0028 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `maybe_i32` (id: 13) <defaults to 0> (Int)
+0x002A | 00 00 | VOffset16 | 0x0000 (0) | offset to field `default_i32` (id: 14) <defaults to 42> (Int)
+0x002C | 48 00 | VOffset16 | 0x0048 (72) | offset to field `just_i32` (id: 15)
+0x002E | 4C 00 | VOffset16 | 0x004C (76) | offset to field `names` (id: 16)
+0x0030 | 50 00 | VOffset16 | 0x0050 (80) | offset to field `points_of_interest` (id: 17)
+0x0032 | 54 00 | VOffset16 | 0x0054 (84) | offset to field `foobars_type` (id: 18)
+0x0034 | 58 00 | VOffset16 | 0x0058 (88) | offset to field `foobars` (id: 19)
+0x0036 | 0A 00 | VOffset16 | 0x000A (10) | offset to field `measurement_type` (id: 20)
+0x0038 | 5C 00 | VOffset16 | 0x005C (92) | offset to field `measurement` (id: 21)
+0x003A | 0B 00 | VOffset16 | 0x000B (11) | offset to field `anything_type` (id: 22)
+0x003C | 60 00 | VOffset16 | 0x0060 (96) | offset to field `anything` (id: 23)
+0x003E | 00 00 | VOffset16 | 0x0000 (0) | offset to field `temperature` (id: 24) <defaults to 98.600000> (Float)
+0x0040 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `teetotaler` (id: 25) <null> (Obj)
+0x0042 | 64 00 | VOffset16 | 0x0064 (100) | offset to field `charlie` (id: 26)
root_table (AnnotatedBinary.Foo):
+0x0044 | 3A 00 00 00 | SOffset32 | 0x0000003A (58) Loc: +0x000A | offset to vtable
+0x0048 | 00 00 00 | uint8_t[3] | ... | padding
+0x004B | 01 | uint8_t | 0x01 (1) | table field `healthy` (Bool)
+0x004C | 02 | uint8_t | 0x02 (2) | table field `meal` (Byte)
+0x004D | 02 | UType8 | 0x02 (2) | table field `bar_baz_type` (UType)
+0x004E | 01 | UType8 | 0x01 (1) | table field `measurement_type` (UType)
+0x004F | 01 | UType8 | 0x01 (1) | table field `anything_type` (UType)
+0x0050 | D2 04 00 00 | uint32_t | 0x000004D2 (1234) | table field `counter` (Int)
+0x0054 | 28 02 00 00 | UOffset32 | 0x00000228 (552) Loc: +0x027C | ERROR: offset to field `bar`. Location is outside the binary.
+0x0058 | 01 00 00 00 | uint32_t | 0x00000001 (1) | struct field `AnnotatedBinary.Building.floors` (Int)
+0x005C | 02 00 00 00 | uint32_t | 0x00000002 (2) | struct field `AnnotatedBinary.Building.doors` (Int)
+0x0060 | 0C 00 00 00 | uint32_t | 0x0000000C (12) | struct field `AnnotatedBinary.Building.windows` (Int)
+0x0064 | 0A 00 00 00 | uint32_t | 0x0000000A (10) | array field `AnnotatedBinary.Dimension.values[0]` (Int)
+0x0068 | 0C 00 00 00 | uint32_t | 0x0000000C (12) | array field `AnnotatedBinary.Dimension.values[1]` (Int)
+0x006C | 14 00 00 00 | uint32_t | 0x00000014 (20) | array field `AnnotatedBinary.Dimension.values[2]` (Int)
+0x0070 | 01 | uint8_t | 0x01 (1) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
+0x0071 | 02 | uint8_t | 0x02 (2) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
+0x0072 | 03 | uint8_t | 0x03 (3) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
+0x0073 | 00 | uint8_t[1] | . | padding
+0x0074 | C8 01 00 00 | UOffset32 | 0x000001C8 (456) Loc: +0x023C | ERROR: offset to field `name`. Location is outside the binary.
+0x0078 | 5C 01 00 00 | UOffset32 | 0x0000015C (348) Loc: +0x01D4 | offset to field `bars` (vector)
+0x007C | 50 01 00 00 | UOffset32 | 0x00000150 (336) Loc: +0x01CC | offset to field `bar_baz` (union of type `Baz`)
+0x0080 | 34 01 00 00 | UOffset32 | 0x00000134 (308) Loc: +0x01B4 | offset to field `accounts` (vector)
+0x0084 | 24 01 00 00 | UOffset32 | 0x00000124 (292) Loc: +0x01A8 | offset to field `bob` (string)
+0x0088 | 14 01 00 00 | UOffset32 | 0x00000114 (276) Loc: +0x019C | offset to field `alice` (string)
+0x008C | 0D 00 00 00 | uint32_t | 0x0000000D (13) | table field `just_i32` (Int)
+0x0090 | DC 00 00 00 | UOffset32 | 0x000000DC (220) Loc: +0x016C | offset to field `names` (vector)
+0x0094 | A0 00 00 00 | UOffset32 | 0x000000A0 (160) Loc: +0x0134 | offset to field `points_of_interest` (vector)
+0x0098 | 94 00 00 00 | UOffset32 | 0x00000094 (148) Loc: +0x012C | offset to field `foobars_type` (vector)
+0x009C | 38 00 00 00 | UOffset32 | 0x00000038 (56) Loc: +0x00D4 | offset to field `foobars` (vector)
+0x00A0 | 33 00 00 00 | UOffset32 | 0x00000033 (51) Loc: +0x00D3 | offset to field `measurement` (union of type `Tolerance`)
+0x00A4 | 1C 00 00 00 | UOffset32 | 0x0000001C (28) Loc: +0x00C0 | offset to field `anything` (union of type `Bar`)
+0x00A8 | 04 00 00 00 | UOffset32 | 0x00000004 (4) Loc: +0x00AC | offset to field `charlie` (string)
string (AnnotatedBinary.Foo.charlie):
+0x00AC | 05 00 00 00 | uint32_t | 0x00000005 (5) | length of string
+0x00B0 | 61 6C 69 63 65 | char[5] | alice
+0x00B5 | 00 | char | 0x00 (0) | string terminator
padding:
+0x00B6 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Bar):
+0x00B8 | 08 00 | uint16_t | 0x0008 (8) | size of this vtable
+0x00BA | 13 00 | uint16_t | 0x0013 (19) | size of referring table
+0x00BC | 08 00 | VOffset16 | 0x0008 (8) | offset to field `a` (id: 0)
+0x00BE | 04 00 | VOffset16 | 0x0004 (4) | offset to field `b` (id: 1)
table (AnnotatedBinary.Bar):
+0x00C0 | 08 00 00 00 | SOffset32 | 0x00000008 (8) Loc: +0x00B8 | offset to vtable
+0x00C4 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float)
+0x00C8 | 00 00 00 00 00 10 74 40 | double | 0x4074100000000000 (321.000000) | table field `a` (Double)
+0x00D0 | 00 00 00 | uint8_t[3] | ... | padding
union (AnnotatedBinary.Tolerance.measurement):
+0x00D3 | 05 | uint8_t | 0x05 (5) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
vector (AnnotatedBinary.Foo.foobars):
+0x00D4 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x00D8 | 34 00 00 00 | UOffset32 | 0x00000034 (52) Loc: +0x010C | offset to union[0] (`Bar`)
+0x00DC | 2C 00 00 00 | UOffset32 | 0x0000002C (44) Loc: +0x0108 | offset to union[1] (`Baz`)
+0x00E0 | 04 00 00 00 | UOffset32 | 0x00000004 (4) Loc: +0x00E4 | offset to union[2] (`Bar`)
table (AnnotatedBinary.Bar):
+0x00E4 | D2 FE FF FF | SOffset32 | 0xFFFFFED2 (-302) Loc: +0x0212 | ERROR: offset to vtable. Invalid offset, points to outside the binary.
unknown (no known references):
+0x00E8 | 00 80 23 44 10 00 00 00 | ?uint8_t[28] | ..#D.... | WARN: nothing refers to this section.
+0x00F0 | 00 00 00 00 00 D8 8E 40 | | .......@
+0x00F8 | 00 00 00 00 6A FE FF FF | | ....j...
+0x0100 | 00 00 00 03 | | ....
vtable (AnnotatedBinary.Baz):
+0x0104 | 04 00 | uint16_t | 0x0004 (4) | size of this vtable
+0x0106 | 04 00 | uint16_t | 0x0004 (4) | size of referring table
table (AnnotatedBinary.Baz):
+0x0108 | 04 00 00 00 | SOffset32 | 0x00000004 (4) Loc: +0x0104 | offset to vtable
table (AnnotatedBinary.Bar):
+0x010C | FA FE FF FF | SOffset32 | 0xFFFFFEFA (-262) Loc: +0x0212 | ERROR: offset to vtable. Invalid offset, points to outside the binary.
unknown (no known references):
+0x0110 | 00 00 E4 43 10 00 00 00 | ?uint8_t[28] | ...C.... | WARN: nothing refers to this section.
+0x0118 | 00 00 00 00 00 C0 5E 40 | | ......^@
+0x0120 | 00 00 00 00 92 FE FF FF | | ........
+0x0128 | 00 00 00 01 | | ....
vector (AnnotatedBinary.Foo.foobars_type):
+0x012C | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x0130 | 01 | UType8 | 0x01 (1) | value[0]
+0x0131 | 02 | UType8 | 0x02 (2) | value[1]
+0x0132 | 01 | UType8 | 0x01 (1) | value[2]
vector (AnnotatedBinary.Foo.points_of_interest):
+0x0134 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x0138 | 33 33 33 33 33 A3 45 40 | double | 0x4045A33333333333 (43.275000) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0140 | 7E 57 04 FF 5B 87 53 C0 | double | 0xC053875BFF04577E (-78.114990) | struct field `AnnotatedBinary.Location.longitude` (Double)
+0x0148 | 8D F0 F6 20 04 B6 42 40 | double | 0x4042B60420F6F08D (37.422001) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0150 | 9F 77 63 41 61 85 5E C0 | double | 0xC05E85614163779F (-122.084061) | struct field `AnnotatedBinary.Location.longitude` (Double)
+0x0158 | 8F 35 23 83 DC 35 4B C0 | double | 0xC04B35DC8323358F (-54.420792) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0160 | F6 97 DD 93 87 C5 0A 40 | double | 0x400AC58793DD97F6 (3.346450) | struct field `AnnotatedBinary.Location.longitude` (Double)
padding:
+0x0168 | 00 00 00 00 | uint8_t[4] | .... | padding
vector (AnnotatedBinary.Foo.names):
+0x016C | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x0170 | 20 00 00 00 | UOffset32 | 0x00000020 (32) Loc: +0x0190 | offset to string[0]
+0x0174 | 14 00 00 00 | UOffset32 | 0x00000014 (20) Loc: +0x0188 | offset to string[1]
+0x0178 | 04 00 00 00 | UOffset32 | 0x00000004 (4) Loc: +0x017C | offset to string[2]
string (AnnotatedBinary.Foo.names):
+0x017C | 07 00 00 00 | uint32_t | 0x00000007 (7) | length of string
+0x0180 | 63 68 61 72 6C 69 65 | char[7] | charlie
+0x0187 | 00 | char | 0x00 (0) | string terminator
string (AnnotatedBinary.Foo.names):
+0x0188 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of string
+0x018C | 62 6F 62 | char[3] | bob
+0x018F | 00 | char | 0x00 (0) | string terminator
string (AnnotatedBinary.Foo.names):
+0x0190 | 05 00 00 00 | uint32_t | 0x00000005 (5) | length of string
+0x0194 | 61 6C 69 63 65 | char[5] | alice
+0x0199 | 00 | char | 0x00 (0) | string terminator
padding:
+0x019A | 00 00 | uint8_t[2] | .. | padding
string (AnnotatedBinary.Foo.alice):
+0x019C | 07 00 00 00 | uint32_t | 0x00000007 (7) | length of string
+0x01A0 | 63 68 61 72 6C 69 65 | char[7] | charlie
+0x01A7 | 00 | char | 0x00 (0) | string terminator
string (AnnotatedBinary.Foo.bob):
+0x01A8 | 07 00 00 00 | uint32_t | 0x00000007 (7) | length of string
+0x01AC | 63 68 61 72 6C 69 65 | char[7] | charlie
+0x01B3 | 00 | char | 0x00 (0) | string terminator
vector (AnnotatedBinary.Foo.accounts):
+0x01B4 | 09 00 00 00 | uint32_t | 0x00000009 (9) | length of vector (# items)
+0x01B8 | 09 00 | uint16_t | 0x0009 (9) | value[0]
+0x01BA | 08 00 | uint16_t | 0x0008 (8) | value[1]
+0x01BC | 07 00 | uint16_t | 0x0007 (7) | value[2]
+0x01BE | 01 00 | uint16_t | 0x0001 (1) | value[3]
+0x01C0 | 02 00 | uint16_t | 0x0002 (2) | value[4]
+0x01C2 | 03 00 | uint16_t | 0x0003 (3) | value[5]
+0x01C4 | 06 00 | uint16_t | 0x0006 (6) | value[6]
+0x01C6 | 05 00 | uint16_t | 0x0005 (5) | value[7]
+0x01C8 | 04 00 | uint16_t | 0x0004 (4) | value[8]
padding:
+0x01CA | 00 00 | uint8_t[2] | .. | padding
table (AnnotatedBinary.Baz):
+0x01CC | 3A FF FF FF | SOffset32 | 0xFFFFFF3A (-198) Loc: +0x0292 | ERROR: offset to vtable. Invalid offset, points to outside the binary.
unknown (no known references):
+0x01D0 | 00 00 00 03 | ?uint8_t[4] | .... | could be a corrupted padding region (non zero) due to the length < 8 bytes.
vector (AnnotatedBinary.Foo.bars):
+0x01D4 | 02 00 00 00 | uint32_t | 0x00000002 (2) | length of vector (# items)
+0x01D8 | 44 00 00 00 | UOffset32 | 0x00000044 (68) Loc: +0x021C | ERROR: offset to table[0]. Invalid offset, points to outside the binary.
+0x01DC | 10 00 | ?uint8_t[2] | .. | ERROR: offset to table[1]. Incomplete binary, expected to read 4 bytes here

View File

@@ -0,0 +1,293 @@
// Annotated Flatbuffer Binary
//
// Schema file: annotated_binary.fbs
// Binary file: tests/invalid_vector_union_type_value.bin
header:
+0x0000 | 44 00 00 00 | UOffset32 | 0x00000044 (68) Loc: +0x0044 | offset to root table `AnnotatedBinary.Foo`
+0x0004 | 41 4E 4E 4F | char[4] | ANNO | File Identifier
padding:
+0x0008 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Foo):
+0x000A | 3A 00 | uint16_t | 0x003A (58) | size of this vtable
+0x000C | 68 00 | uint16_t | 0x0068 (104) | size of referring table
+0x000E | 0C 00 | VOffset16 | 0x000C (12) | offset to field `counter` (id: 0)
+0x0010 | 07 00 | VOffset16 | 0x0007 (7) | offset to field `healthy` (id: 1)
+0x0012 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `level` (id: 2) <defaults to 99> (Long)
+0x0014 | 08 00 | VOffset16 | 0x0008 (8) | offset to field `meal` (id: 3)
+0x0016 | 10 00 | VOffset16 | 0x0010 (16) | offset to field `bar` (id: 4)
+0x0018 | 14 00 | VOffset16 | 0x0014 (20) | offset to field `home` (id: 5)
+0x001A | 30 00 | VOffset16 | 0x0030 (48) | offset to field `name` (id: 6)
+0x001C | 34 00 | VOffset16 | 0x0034 (52) | offset to field `bars` (id: 7)
+0x001E | 09 00 | VOffset16 | 0x0009 (9) | offset to field `bar_baz_type` (id: 8)
+0x0020 | 38 00 | VOffset16 | 0x0038 (56) | offset to field `bar_baz` (id: 9)
+0x0022 | 3C 00 | VOffset16 | 0x003C (60) | offset to field `accounts` (id: 10)
+0x0024 | 40 00 | VOffset16 | 0x0040 (64) | offset to field `bob` (id: 11)
+0x0026 | 44 00 | VOffset16 | 0x0044 (68) | offset to field `alice` (id: 12)
+0x0028 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `maybe_i32` (id: 13) <defaults to 0> (Int)
+0x002A | 00 00 | VOffset16 | 0x0000 (0) | offset to field `default_i32` (id: 14) <defaults to 42> (Int)
+0x002C | 48 00 | VOffset16 | 0x0048 (72) | offset to field `just_i32` (id: 15)
+0x002E | 4C 00 | VOffset16 | 0x004C (76) | offset to field `names` (id: 16)
+0x0030 | 50 00 | VOffset16 | 0x0050 (80) | offset to field `points_of_interest` (id: 17)
+0x0032 | 54 00 | VOffset16 | 0x0054 (84) | offset to field `foobars_type` (id: 18)
+0x0034 | 58 00 | VOffset16 | 0x0058 (88) | offset to field `foobars` (id: 19)
+0x0036 | 0A 00 | VOffset16 | 0x000A (10) | offset to field `measurement_type` (id: 20)
+0x0038 | 5C 00 | VOffset16 | 0x005C (92) | offset to field `measurement` (id: 21)
+0x003A | 0B 00 | VOffset16 | 0x000B (11) | offset to field `anything_type` (id: 22)
+0x003C | 60 00 | VOffset16 | 0x0060 (96) | offset to field `anything` (id: 23)
+0x003E | 00 00 | VOffset16 | 0x0000 (0) | offset to field `temperature` (id: 24) <defaults to 98.600000> (Float)
+0x0040 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `teetotaler` (id: 25) <null> (Obj)
+0x0042 | 64 00 | VOffset16 | 0x0064 (100) | offset to field `charlie` (id: 26)
root_table (AnnotatedBinary.Foo):
+0x0044 | 3A 00 00 00 | SOffset32 | 0x0000003A (58) Loc: +0x000A | offset to vtable
+0x0048 | 00 00 00 | uint8_t[3] | ... | padding
+0x004B | 01 | uint8_t | 0x01 (1) | table field `healthy` (Bool)
+0x004C | 02 | uint8_t | 0x02 (2) | table field `meal` (Byte)
+0x004D | 02 | UType8 | 0x02 (2) | table field `bar_baz_type` (UType)
+0x004E | 01 | UType8 | 0x01 (1) | table field `measurement_type` (UType)
+0x004F | 01 | UType8 | 0x01 (1) | table field `anything_type` (UType)
+0x0050 | D2 04 00 00 | uint32_t | 0x000004D2 (1234) | table field `counter` (Int)
+0x0054 | 28 02 00 00 | UOffset32 | 0x00000228 (552) Loc: +0x027C | offset to field `bar` (table)
+0x0058 | 01 00 00 00 | uint32_t | 0x00000001 (1) | struct field `AnnotatedBinary.Building.floors` (Int)
+0x005C | 02 00 00 00 | uint32_t | 0x00000002 (2) | struct field `AnnotatedBinary.Building.doors` (Int)
+0x0060 | 0C 00 00 00 | uint32_t | 0x0000000C (12) | struct field `AnnotatedBinary.Building.windows` (Int)
+0x0064 | 0A 00 00 00 | uint32_t | 0x0000000A (10) | array field `AnnotatedBinary.Dimension.values[0]` (Int)
+0x0068 | 0C 00 00 00 | uint32_t | 0x0000000C (12) | array field `AnnotatedBinary.Dimension.values[1]` (Int)
+0x006C | 14 00 00 00 | uint32_t | 0x00000014 (20) | array field `AnnotatedBinary.Dimension.values[2]` (Int)
+0x0070 | 01 | uint8_t | 0x01 (1) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
+0x0071 | 02 | uint8_t | 0x02 (2) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
+0x0072 | 03 | uint8_t | 0x03 (3) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
+0x0073 | 00 | uint8_t[1] | . | padding
+0x0074 | C8 01 00 00 | UOffset32 | 0x000001C8 (456) Loc: +0x023C | offset to field `name` (string)
+0x0078 | 5C 01 00 00 | UOffset32 | 0x0000015C (348) Loc: +0x01D4 | offset to field `bars` (vector)
+0x007C | 50 01 00 00 | UOffset32 | 0x00000150 (336) Loc: +0x01CC | offset to field `bar_baz` (union of type `Baz`)
+0x0080 | 34 01 00 00 | UOffset32 | 0x00000134 (308) Loc: +0x01B4 | offset to field `accounts` (vector)
+0x0084 | 24 01 00 00 | UOffset32 | 0x00000124 (292) Loc: +0x01A8 | offset to field `bob` (string)
+0x0088 | 14 01 00 00 | UOffset32 | 0x00000114 (276) Loc: +0x019C | offset to field `alice` (string)
+0x008C | 0D 00 00 00 | uint32_t | 0x0000000D (13) | table field `just_i32` (Int)
+0x0090 | DC 00 00 00 | UOffset32 | 0x000000DC (220) Loc: +0x016C | offset to field `names` (vector)
+0x0094 | A0 00 00 00 | UOffset32 | 0x000000A0 (160) Loc: +0x0134 | offset to field `points_of_interest` (vector)
+0x0098 | 94 00 00 00 | UOffset32 | 0x00000094 (148) Loc: +0x012C | offset to field `foobars_type` (vector)
+0x009C | 38 00 00 00 | UOffset32 | 0x00000038 (56) Loc: +0x00D4 | offset to field `foobars` (vector)
+0x00A0 | 33 00 00 00 | UOffset32 | 0x00000033 (51) Loc: +0x00D3 | offset to field `measurement` (union of type `Tolerance`)
+0x00A4 | 1C 00 00 00 | UOffset32 | 0x0000001C (28) Loc: +0x00C0 | offset to field `anything` (union of type `Bar`)
+0x00A8 | 04 00 00 00 | UOffset32 | 0x00000004 (4) Loc: +0x00AC | offset to field `charlie` (string)
string (AnnotatedBinary.Foo.charlie):
+0x00AC | 05 00 00 00 | uint32_t | 0x00000005 (5) | length of string
+0x00B0 | 61 6C 69 63 65 | char[5] | alice
+0x00B5 | 00 | char | 0x00 (0) | string terminator
padding:
+0x00B6 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Bar):
+0x00B8 | 08 00 | uint16_t | 0x0008 (8) | size of this vtable
+0x00BA | 13 00 | uint16_t | 0x0013 (19) | size of referring table
+0x00BC | 08 00 | VOffset16 | 0x0008 (8) | offset to field `a` (id: 0)
+0x00BE | 04 00 | VOffset16 | 0x0004 (4) | offset to field `b` (id: 1)
table (AnnotatedBinary.Bar):
+0x00C0 | 08 00 00 00 | SOffset32 | 0x00000008 (8) Loc: +0x00B8 | offset to vtable
+0x00C4 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float)
+0x00C8 | 00 00 00 00 00 10 74 40 | double | 0x4074100000000000 (321.000000) | table field `a` (Double)
+0x00D0 | 00 00 00 | uint8_t[3] | ... | padding
union (AnnotatedBinary.Tolerance.measurement):
+0x00D3 | 05 | uint8_t | 0x05 (5) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
vector (AnnotatedBinary.Foo.foobars):
+0x00D4 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x00D8 | 34 00 00 00 | UOffset32 | 0x00000034 (52) Loc: +0x010C | offset to union[0] (`Bar`)
+0x00DC | 2C 00 00 00 | ?uint8_t[4] | ,... | WARN: nothing refers to this region.
+0x00E0 | 04 00 00 00 | UOffset32 | 0x00000004 (4) Loc: +0x00E4 | offset to union[2] (`Bar`)
table (AnnotatedBinary.Bar):
+0x00E4 | D2 FE FF FF | SOffset32 | 0xFFFFFED2 (-302) Loc: +0x0212 | offset to vtable
+0x00E8 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float)
+0x00EC | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x00FC | offset to field `c` (table)
+0x00F0 | 00 00 00 00 00 D8 8E 40 | double | 0x408ED80000000000 (987.000000) | table field `a` (Double)
+0x00F8 | 00 00 00 00 | uint8_t[4] | .... | padding
table (AnnotatedBinary.Baz):
+0x00FC | 6A FE FF FF | SOffset32 | 0xFFFFFE6A (-406) Loc: +0x0292 | offset to vtable
+0x0100 | 00 00 00 | uint8_t[3] | ... | padding
+0x0103 | 03 | uint8_t | 0x03 (3) | table field `meal` (Byte)
unknown (no known references):
+0x0104 | 04 00 04 00 04 00 00 00 | ?uint8_t[8] | ........ | WARN: nothing refers to this section.
table (AnnotatedBinary.Bar):
+0x010C | FA FE FF FF | SOffset32 | 0xFFFFFEFA (-262) Loc: +0x0212 | offset to vtable
+0x0110 | 00 00 E4 43 | float | 0x43E40000 (456.000000) | table field `b` (Float)
+0x0114 | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x0124 | offset to field `c` (table)
+0x0118 | 00 00 00 00 00 C0 5E 40 | double | 0x405EC00000000000 (123.000000) | table field `a` (Double)
+0x0120 | 00 00 00 00 | uint8_t[4] | .... | padding
table (AnnotatedBinary.Baz):
+0x0124 | 92 FE FF FF | SOffset32 | 0xFFFFFE92 (-366) Loc: +0x0292 | offset to vtable
+0x0128 | 00 00 00 | uint8_t[3] | ... | padding
+0x012B | 01 | uint8_t | 0x01 (1) | table field `meal` (Byte)
vector (AnnotatedBinary.Foo.foobars_type):
+0x012C | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x0130 | 01 | UType8 | 0x01 (1) | value[0]
+0x0131 | FF | UType8 | 0xFF (255) | ERROR: value[1]. Invalid union type value.
+0x0132 | 01 | UType8 | 0x01 (1) | value[2]
vector (AnnotatedBinary.Foo.points_of_interest):
+0x0134 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x0138 | 33 33 33 33 33 A3 45 40 | double | 0x4045A33333333333 (43.275000) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0140 | 7E 57 04 FF 5B 87 53 C0 | double | 0xC053875BFF04577E (-78.114990) | struct field `AnnotatedBinary.Location.longitude` (Double)
+0x0148 | 8D F0 F6 20 04 B6 42 40 | double | 0x4042B60420F6F08D (37.422001) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0150 | 9F 77 63 41 61 85 5E C0 | double | 0xC05E85614163779F (-122.084061) | struct field `AnnotatedBinary.Location.longitude` (Double)
+0x0158 | 8F 35 23 83 DC 35 4B C0 | double | 0xC04B35DC8323358F (-54.420792) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0160 | F6 97 DD 93 87 C5 0A 40 | double | 0x400AC58793DD97F6 (3.346450) | struct field `AnnotatedBinary.Location.longitude` (Double)
padding:
+0x0168 | 00 00 00 00 | uint8_t[4] | .... | padding
vector (AnnotatedBinary.Foo.names):
+0x016C | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x0170 | 20 00 00 00 | UOffset32 | 0x00000020 (32) Loc: +0x0190 | offset to string[0]
+0x0174 | 14 00 00 00 | UOffset32 | 0x00000014 (20) Loc: +0x0188 | offset to string[1]
+0x0178 | 04 00 00 00 | UOffset32 | 0x00000004 (4) Loc: +0x017C | offset to string[2]
string (AnnotatedBinary.Foo.names):
+0x017C | 07 00 00 00 | uint32_t | 0x00000007 (7) | length of string
+0x0180 | 63 68 61 72 6C 69 65 | char[7] | charlie
+0x0187 | 00 | char | 0x00 (0) | string terminator
string (AnnotatedBinary.Foo.names):
+0x0188 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of string
+0x018C | 62 6F 62 | char[3] | bob
+0x018F | 00 | char | 0x00 (0) | string terminator
string (AnnotatedBinary.Foo.names):
+0x0190 | 05 00 00 00 | uint32_t | 0x00000005 (5) | length of string
+0x0194 | 61 6C 69 63 65 | char[5] | alice
+0x0199 | 00 | char | 0x00 (0) | string terminator
padding:
+0x019A | 00 00 | uint8_t[2] | .. | padding
string (AnnotatedBinary.Foo.alice):
+0x019C | 07 00 00 00 | uint32_t | 0x00000007 (7) | length of string
+0x01A0 | 63 68 61 72 6C 69 65 | char[7] | charlie
+0x01A7 | 00 | char | 0x00 (0) | string terminator
string (AnnotatedBinary.Foo.bob):
+0x01A8 | 07 00 00 00 | uint32_t | 0x00000007 (7) | length of string
+0x01AC | 63 68 61 72 6C 69 65 | char[7] | charlie
+0x01B3 | 00 | char | 0x00 (0) | string terminator
vector (AnnotatedBinary.Foo.accounts):
+0x01B4 | 09 00 00 00 | uint32_t | 0x00000009 (9) | length of vector (# items)
+0x01B8 | 09 00 | uint16_t | 0x0009 (9) | value[0]
+0x01BA | 08 00 | uint16_t | 0x0008 (8) | value[1]
+0x01BC | 07 00 | uint16_t | 0x0007 (7) | value[2]
+0x01BE | 01 00 | uint16_t | 0x0001 (1) | value[3]
+0x01C0 | 02 00 | uint16_t | 0x0002 (2) | value[4]
+0x01C2 | 03 00 | uint16_t | 0x0003 (3) | value[5]
+0x01C4 | 06 00 | uint16_t | 0x0006 (6) | value[6]
+0x01C6 | 05 00 | uint16_t | 0x0005 (5) | value[7]
+0x01C8 | 04 00 | uint16_t | 0x0004 (4) | value[8]
padding:
+0x01CA | 00 00 | uint8_t[2] | .. | padding
table (AnnotatedBinary.Baz):
+0x01CC | 3A FF FF FF | SOffset32 | 0xFFFFFF3A (-198) Loc: +0x0292 | offset to vtable
+0x01D0 | 00 00 00 | uint8_t[3] | ... | padding
+0x01D3 | 03 | uint8_t | 0x03 (3) | table field `meal` (Byte)
vector (AnnotatedBinary.Foo.bars):
+0x01D4 | 02 00 00 00 | uint32_t | 0x00000002 (2) | length of vector (# items)
+0x01D8 | 44 00 00 00 | UOffset32 | 0x00000044 (68) Loc: +0x021C | offset to table[0]
+0x01DC | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x01EC | offset to table[1]
padding:
+0x01E0 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Bar):
+0x01E2 | 0A 00 | uint16_t | 0x000A (10) | size of this vtable
+0x01E4 | 1A 00 | uint16_t | 0x001A (26) | size of referring table
+0x01E6 | 0C 00 | VOffset16 | 0x000C (12) | offset to field `a` (id: 0)
+0x01E8 | 04 00 | VOffset16 | 0x0004 (4) | offset to field `b` (id: 1)
+0x01EA | 08 00 | VOffset16 | 0x0008 (8) | offset to field `c` (id: 2)
table (AnnotatedBinary.Bar):
+0x01EC | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x01E2 | offset to vtable
+0x01F0 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float)
+0x01F4 | 18 00 00 00 | UOffset32 | 0x00000018 (24) Loc: +0x020C | offset to field `c` (table)
+0x01F8 | 00 00 00 00 00 D8 8E 40 | double | 0x408ED80000000000 (987.000000) | table field `a` (Double)
+0x0200 | 00 00 00 00 00 00 | uint8_t[6] | ...... | padding
vtable (AnnotatedBinary.Baz):
+0x0206 | 06 00 | uint16_t | 0x0006 (6) | size of this vtable
+0x0208 | 06 00 | uint16_t | 0x0006 (6) | size of referring table
+0x020A | 05 00 | VOffset16 | 0x0005 (5) | offset to field `meal` (id: 0)
table (AnnotatedBinary.Baz):
+0x020C | 06 00 00 00 | SOffset32 | 0x00000006 (6) Loc: +0x0206 | offset to vtable
+0x0210 | 00 | uint8_t[1] | . | padding
+0x0211 | 03 | uint8_t | 0x03 (3) | table field `meal` (Byte)
vtable (AnnotatedBinary.Bar):
+0x0212 | 0A 00 | uint16_t | 0x000A (10) | size of this vtable
+0x0214 | 18 00 | uint16_t | 0x0018 (24) | size of referring table
+0x0216 | 0C 00 | VOffset16 | 0x000C (12) | offset to field `a` (id: 0)
+0x0218 | 04 00 | VOffset16 | 0x0004 (4) | offset to field `b` (id: 1)
+0x021A | 08 00 | VOffset16 | 0x0008 (8) | offset to field `c` (id: 2)
table (AnnotatedBinary.Bar):
+0x021C | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x0212 | offset to vtable
+0x0220 | 00 00 E4 43 | float | 0x43E40000 (456.000000) | table field `b` (Float)
+0x0224 | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x0234 | offset to field `c` (table)
+0x0228 | 00 00 00 00 00 C0 5E 40 | double | 0x405EC00000000000 (123.000000) | table field `a` (Double)
+0x0230 | 00 00 00 00 | uint8_t[4] | .... | padding
table (AnnotatedBinary.Baz):
+0x0234 | A2 FF FF FF | SOffset32 | 0xFFFFFFA2 (-94) Loc: +0x0292 | offset to vtable
+0x0238 | 00 00 00 | uint8_t[3] | ... | padding
+0x023B | 01 | uint8_t | 0x01 (1) | table field `meal` (Byte)
string (AnnotatedBinary.Foo.name):
+0x023C | 2F 00 00 00 | uint32_t | 0x0000002F (47) | length of string
+0x0240 | 54 68 69 73 20 69 73 20 | char[47] | This is
+0x0248 | 61 20 6C 6F 6E 67 20 73 | | a long s
+0x0250 | 74 72 69 6E 67 20 74 6F | | tring to
+0x0258 | 20 73 68 6F 77 20 68 6F | | show ho
+0x0260 | 77 20 69 74 20 62 72 65 | | w it bre
+0x0268 | 61 6B 73 20 75 70 2E | | aks up.
+0x026F | 00 | char | 0x00 (0) | string terminator
padding:
+0x0270 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Bar):
+0x0272 | 0A 00 | uint16_t | 0x000A (10) | size of this vtable
+0x0274 | 16 00 | uint16_t | 0x0016 (22) | size of referring table
+0x0276 | 0C 00 | VOffset16 | 0x000C (12) | offset to field `a` (id: 0)
+0x0278 | 04 00 | VOffset16 | 0x0004 (4) | offset to field `b` (id: 1)
+0x027A | 08 00 | VOffset16 | 0x0008 (8) | offset to field `c` (id: 2)
table (AnnotatedBinary.Bar):
+0x027C | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x0272 | offset to vtable
+0x0280 | 65 20 71 49 | float | 0x49712065 (987654.312500) | table field `b` (Float)
+0x0284 | 14 00 00 00 | UOffset32 | 0x00000014 (20) Loc: +0x0298 | offset to field `c` (table)
+0x0288 | C9 76 BE 9F 0C 24 FE 40 | double | 0x40FE240C9FBE76C9 (123456.789000) | table field `a` (Double)
+0x0290 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Baz):
+0x0292 | 06 00 | uint16_t | 0x0006 (6) | size of this vtable
+0x0294 | 08 00 | uint16_t | 0x0008 (8) | size of referring table
+0x0296 | 07 00 | VOffset16 | 0x0007 (7) | offset to field `meal` (id: 0)
table (AnnotatedBinary.Baz):
+0x0298 | 06 00 00 00 | SOffset32 | 0x00000006 (6) Loc: +0x0292 | offset to vtable
+0x029C | 00 00 00 | uint8_t[3] | ... | padding
+0x029F | 01 | uint8_t | 0x01 (1) | table field `meal` (Byte)

View File

@@ -0,0 +1,209 @@
// Annotated Flatbuffer Binary
//
// Schema file: annotated_binary.fbs
// Binary file: tests/invalid_vector_unions_cut_short.bin
header:
+0x0000 | 44 00 00 00 | UOffset32 | 0x00000044 (68) Loc: +0x0044 | offset to root table `AnnotatedBinary.Foo`
+0x0004 | 41 4E 4E 4F | char[4] | ANNO | File Identifier
padding:
+0x0008 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Foo):
+0x000A | 3A 00 | uint16_t | 0x003A (58) | size of this vtable
+0x000C | 68 00 | uint16_t | 0x0068 (104) | size of referring table
+0x000E | 0C 00 | VOffset16 | 0x000C (12) | offset to field `counter` (id: 0)
+0x0010 | 07 00 | VOffset16 | 0x0007 (7) | offset to field `healthy` (id: 1)
+0x0012 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `level` (id: 2) <defaults to 99> (Long)
+0x0014 | 08 00 | VOffset16 | 0x0008 (8) | offset to field `meal` (id: 3)
+0x0016 | 10 00 | VOffset16 | 0x0010 (16) | offset to field `bar` (id: 4)
+0x0018 | 14 00 | VOffset16 | 0x0014 (20) | offset to field `home` (id: 5)
+0x001A | 30 00 | VOffset16 | 0x0030 (48) | offset to field `name` (id: 6)
+0x001C | 34 00 | VOffset16 | 0x0034 (52) | offset to field `bars` (id: 7)
+0x001E | 09 00 | VOffset16 | 0x0009 (9) | offset to field `bar_baz_type` (id: 8)
+0x0020 | 38 00 | VOffset16 | 0x0038 (56) | offset to field `bar_baz` (id: 9)
+0x0022 | 3C 00 | VOffset16 | 0x003C (60) | offset to field `accounts` (id: 10)
+0x0024 | 40 00 | VOffset16 | 0x0040 (64) | offset to field `bob` (id: 11)
+0x0026 | 44 00 | VOffset16 | 0x0044 (68) | offset to field `alice` (id: 12)
+0x0028 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `maybe_i32` (id: 13) <defaults to 0> (Int)
+0x002A | 00 00 | VOffset16 | 0x0000 (0) | offset to field `default_i32` (id: 14) <defaults to 42> (Int)
+0x002C | 48 00 | VOffset16 | 0x0048 (72) | offset to field `just_i32` (id: 15)
+0x002E | 4C 00 | VOffset16 | 0x004C (76) | offset to field `names` (id: 16)
+0x0030 | 50 00 | VOffset16 | 0x0050 (80) | offset to field `points_of_interest` (id: 17)
+0x0032 | 54 00 | VOffset16 | 0x0054 (84) | offset to field `foobars_type` (id: 18)
+0x0034 | 58 00 | VOffset16 | 0x0058 (88) | offset to field `foobars` (id: 19)
+0x0036 | 0A 00 | VOffset16 | 0x000A (10) | offset to field `measurement_type` (id: 20)
+0x0038 | 5C 00 | VOffset16 | 0x005C (92) | offset to field `measurement` (id: 21)
+0x003A | 0B 00 | VOffset16 | 0x000B (11) | offset to field `anything_type` (id: 22)
+0x003C | 60 00 | VOffset16 | 0x0060 (96) | offset to field `anything` (id: 23)
+0x003E | 00 00 | VOffset16 | 0x0000 (0) | offset to field `temperature` (id: 24) <defaults to 98.600000> (Float)
+0x0040 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `teetotaler` (id: 25) <null> (Obj)
+0x0042 | 64 00 | VOffset16 | 0x0064 (100) | offset to field `charlie` (id: 26)
root_table (AnnotatedBinary.Foo):
+0x0044 | 3A 00 00 00 | SOffset32 | 0x0000003A (58) Loc: +0x000A | offset to vtable
+0x0048 | 00 00 00 | uint8_t[3] | ... | padding
+0x004B | 01 | uint8_t | 0x01 (1) | table field `healthy` (Bool)
+0x004C | 02 | uint8_t | 0x02 (2) | table field `meal` (Byte)
+0x004D | 02 | UType8 | 0x02 (2) | table field `bar_baz_type` (UType)
+0x004E | 01 | UType8 | 0x01 (1) | table field `measurement_type` (UType)
+0x004F | 01 | UType8 | 0x01 (1) | table field `anything_type` (UType)
+0x0050 | D2 04 00 00 | uint32_t | 0x000004D2 (1234) | table field `counter` (Int)
+0x0054 | 28 02 00 00 | UOffset32 | 0x00000228 (552) Loc: +0x027C | ERROR: offset to field `bar`. Location is outside the binary.
+0x0058 | 01 00 00 00 | uint32_t | 0x00000001 (1) | struct field `AnnotatedBinary.Building.floors` (Int)
+0x005C | 02 00 00 00 | uint32_t | 0x00000002 (2) | struct field `AnnotatedBinary.Building.doors` (Int)
+0x0060 | 0C 00 00 00 | uint32_t | 0x0000000C (12) | struct field `AnnotatedBinary.Building.windows` (Int)
+0x0064 | 0A 00 00 00 | uint32_t | 0x0000000A (10) | array field `AnnotatedBinary.Dimension.values[0]` (Int)
+0x0068 | 0C 00 00 00 | uint32_t | 0x0000000C (12) | array field `AnnotatedBinary.Dimension.values[1]` (Int)
+0x006C | 14 00 00 00 | uint32_t | 0x00000014 (20) | array field `AnnotatedBinary.Dimension.values[2]` (Int)
+0x0070 | 01 | uint8_t | 0x01 (1) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
+0x0071 | 02 | uint8_t | 0x02 (2) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
+0x0072 | 03 | uint8_t | 0x03 (3) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
+0x0073 | 00 | uint8_t[1] | . | padding
+0x0074 | C8 01 00 00 | UOffset32 | 0x000001C8 (456) Loc: +0x023C | ERROR: offset to field `name`. Location is outside the binary.
+0x0078 | 5C 01 00 00 | UOffset32 | 0x0000015C (348) Loc: +0x01D4 | offset to field `bars` (vector)
+0x007C | 50 01 00 00 | UOffset32 | 0x00000150 (336) Loc: +0x01CC | offset to field `bar_baz` (union of type `Baz`)
+0x0080 | 34 01 00 00 | UOffset32 | 0x00000134 (308) Loc: +0x01B4 | offset to field `accounts` (vector)
+0x0084 | 24 01 00 00 | UOffset32 | 0x00000124 (292) Loc: +0x01A8 | offset to field `bob` (string)
+0x0088 | 14 01 00 00 | UOffset32 | 0x00000114 (276) Loc: +0x019C | offset to field `alice` (string)
+0x008C | 0D 00 00 00 | uint32_t | 0x0000000D (13) | table field `just_i32` (Int)
+0x0090 | DC 00 00 00 | UOffset32 | 0x000000DC (220) Loc: +0x016C | offset to field `names` (vector)
+0x0094 | A0 00 00 00 | UOffset32 | 0x000000A0 (160) Loc: +0x0134 | offset to field `points_of_interest` (vector)
+0x0098 | 94 00 00 00 | UOffset32 | 0x00000094 (148) Loc: +0x012C | offset to field `foobars_type` (vector)
+0x009C | 38 00 00 00 | UOffset32 | 0x00000038 (56) Loc: +0x00D4 | offset to field `foobars` (vector)
+0x00A0 | 33 00 00 00 | UOffset32 | 0x00000033 (51) Loc: +0x00D3 | offset to field `measurement` (union of type `Tolerance`)
+0x00A4 | 1C 00 00 00 | UOffset32 | 0x0000001C (28) Loc: +0x00C0 | offset to field `anything` (union of type `Bar`)
+0x00A8 | 04 00 00 00 | UOffset32 | 0x00000004 (4) Loc: +0x00AC | offset to field `charlie` (string)
string (AnnotatedBinary.Foo.charlie):
+0x00AC | 05 00 00 00 | uint32_t | 0x00000005 (5) | length of string
+0x00B0 | 61 6C 69 63 65 | char[5] | alice
+0x00B5 | 00 | char | 0x00 (0) | string terminator
padding:
+0x00B6 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Bar):
+0x00B8 | 08 00 | uint16_t | 0x0008 (8) | size of this vtable
+0x00BA | 13 00 | uint16_t | 0x0013 (19) | size of referring table
+0x00BC | 08 00 | VOffset16 | 0x0008 (8) | offset to field `a` (id: 0)
+0x00BE | 04 00 | VOffset16 | 0x0004 (4) | offset to field `b` (id: 1)
table (AnnotatedBinary.Bar):
+0x00C0 | 08 00 00 00 | SOffset32 | 0x00000008 (8) Loc: +0x00B8 | offset to vtable
+0x00C4 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float)
+0x00C8 | 00 00 00 00 00 10 74 40 | double | 0x4074100000000000 (321.000000) | table field `a` (Double)
+0x00D0 | 00 00 00 | uint8_t[3] | ... | padding
union (AnnotatedBinary.Tolerance.measurement):
+0x00D3 | 05 | uint8_t | 0x05 (5) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
vector (AnnotatedBinary.Foo.foobars):
+0x00D4 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x00D8 | 34 00 00 00 | UOffset32 | 0x00000034 (52) Loc: +0x010C | offset to union[0] (`Bar`)
+0x00DC | 2C 00 00 00 | UOffset32 | 0x0000002C (44) Loc: +0x0108 | offset to union[1] (`Baz`)
+0x00E0 | 04 00 00 00 | UOffset32 | 0x00000004 (4) Loc: +0x00E4 | offset to union[2] (`Bar`)
table (AnnotatedBinary.Bar):
+0x00E4 | D2 FE FF FF | SOffset32 | 0xFFFFFED2 (-302) Loc: +0x0212 | ERROR: offset to vtable. Invalid offset, points to outside the binary.
unknown (no known references):
+0x00E8 | 00 80 23 44 10 00 00 00 | ?uint8_t[28] | ..#D.... | WARN: nothing refers to this section.
+0x00F0 | 00 00 00 00 00 D8 8E 40 | | .......@
+0x00F8 | 00 00 00 00 6A FE FF FF | | ....j...
+0x0100 | 00 00 00 03 | | ....
vtable (AnnotatedBinary.Baz):
+0x0104 | 04 00 | uint16_t | 0x0004 (4) | size of this vtable
+0x0106 | 04 00 | uint16_t | 0x0004 (4) | size of referring table
table (AnnotatedBinary.Baz):
+0x0108 | 04 00 00 00 | SOffset32 | 0x00000004 (4) Loc: +0x0104 | offset to vtable
table (AnnotatedBinary.Bar):
+0x010C | FA FE FF FF | SOffset32 | 0xFFFFFEFA (-262) Loc: +0x0212 | ERROR: offset to vtable. Invalid offset, points to outside the binary.
unknown (no known references):
+0x0110 | 00 00 E4 43 10 00 00 00 | ?uint8_t[28] | ...C.... | WARN: nothing refers to this section.
+0x0118 | 00 00 00 00 00 C0 5E 40 | | ......^@
+0x0120 | 00 00 00 00 92 FE FF FF | | ........
+0x0128 | 00 00 00 01 | | ....
vector (AnnotatedBinary.Foo.foobars_type):
+0x012C | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x0130 | 01 | UType8 | 0x01 (1) | value[0]
+0x0131 | 02 | UType8 | 0x02 (2) | value[1]
+0x0132 | 01 | UType8 | 0x01 (1) | value[2]
vector (AnnotatedBinary.Foo.points_of_interest):
+0x0134 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x0138 | 33 33 33 33 33 A3 45 40 | double | 0x4045A33333333333 (43.275000) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0140 | 7E 57 04 FF 5B 87 53 C0 | double | 0xC053875BFF04577E (-78.114990) | struct field `AnnotatedBinary.Location.longitude` (Double)
+0x0148 | 8D F0 F6 20 04 B6 42 40 | double | 0x4042B60420F6F08D (37.422001) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0150 | 9F 77 63 41 61 85 5E C0 | double | 0xC05E85614163779F (-122.084061) | struct field `AnnotatedBinary.Location.longitude` (Double)
+0x0158 | 8F 35 23 83 DC 35 4B C0 | double | 0xC04B35DC8323358F (-54.420792) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0160 | F6 97 DD 93 87 C5 0A 40 | double | 0x400AC58793DD97F6 (3.346450) | struct field `AnnotatedBinary.Location.longitude` (Double)
padding:
+0x0168 | 00 00 00 00 | uint8_t[4] | .... | padding
vector (AnnotatedBinary.Foo.names):
+0x016C | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x0170 | 20 00 00 00 | UOffset32 | 0x00000020 (32) Loc: +0x0190 | offset to string[0]
+0x0174 | 14 00 00 00 | UOffset32 | 0x00000014 (20) Loc: +0x0188 | offset to string[1]
+0x0178 | 04 00 00 00 | UOffset32 | 0x00000004 (4) Loc: +0x017C | offset to string[2]
string (AnnotatedBinary.Foo.names):
+0x017C | 07 00 00 00 | uint32_t | 0x00000007 (7) | length of string
+0x0180 | 63 68 61 72 6C 69 65 | char[7] | charlie
+0x0187 | 00 | char | 0x00 (0) | string terminator
string (AnnotatedBinary.Foo.names):
+0x0188 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of string
+0x018C | 62 6F 62 | char[3] | bob
+0x018F | 00 | char | 0x00 (0) | string terminator
string (AnnotatedBinary.Foo.names):
+0x0190 | 05 00 00 00 | uint32_t | 0x00000005 (5) | length of string
+0x0194 | 61 6C 69 63 65 | char[5] | alice
+0x0199 | 00 | char | 0x00 (0) | string terminator
padding:
+0x019A | 00 00 | uint8_t[2] | .. | padding
string (AnnotatedBinary.Foo.alice):
+0x019C | 07 00 00 00 | uint32_t | 0x00000007 (7) | length of string
+0x01A0 | 63 68 61 72 6C 69 65 | char[7] | charlie
+0x01A7 | 00 | char | 0x00 (0) | string terminator
string (AnnotatedBinary.Foo.bob):
+0x01A8 | 07 00 00 00 | uint32_t | 0x00000007 (7) | length of string
+0x01AC | 63 68 61 72 6C 69 65 | char[7] | charlie
+0x01B3 | 00 | char | 0x00 (0) | string terminator
vector (AnnotatedBinary.Foo.accounts):
+0x01B4 | 09 00 00 00 | uint32_t | 0x00000009 (9) | length of vector (# items)
+0x01B8 | 09 00 | uint16_t | 0x0009 (9) | value[0]
+0x01BA | 08 00 | uint16_t | 0x0008 (8) | value[1]
+0x01BC | 07 00 | uint16_t | 0x0007 (7) | value[2]
+0x01BE | 01 00 | uint16_t | 0x0001 (1) | value[3]
+0x01C0 | 02 00 | uint16_t | 0x0002 (2) | value[4]
+0x01C2 | 03 00 | uint16_t | 0x0003 (3) | value[5]
+0x01C4 | 06 00 | uint16_t | 0x0006 (6) | value[6]
+0x01C6 | 05 00 | uint16_t | 0x0005 (5) | value[7]
+0x01C8 | 04 00 | uint16_t | 0x0004 (4) | value[8]
padding:
+0x01CA | 00 00 | uint8_t[2] | .. | padding
table (AnnotatedBinary.Baz):
+0x01CC | 3A FF FF FF | SOffset32 | 0xFFFFFF3A (-198) Loc: +0x0292 | ERROR: offset to vtable. Invalid offset, points to outside the binary.
unknown (no known references):
+0x01D0 | 00 00 00 03 | ?uint8_t[4] | .... | could be a corrupted padding region (non zero) due to the length < 8 bytes.
vector (AnnotatedBinary.Foo.bars):
+0x01D4 | 02 00 00 00 | uint32_t | 0x00000002 (2) | length of vector (# items)
+0x01D8 | 44 00 00 00 | UOffset32 | 0x00000044 (68) Loc: +0x021C | ERROR: offset to table[0]. Invalid offset, points to outside the binary.
+0x01DC | 10 00 | ?uint8_t[2] | .. | ERROR: offset to table[1]. Incomplete binary, expected to read 4 bytes here

View File

@@ -0,0 +1,286 @@
// Annotated Flatbuffer Binary
//
// Schema file: annotated_binary.fbs
// Binary file: tests/invalid_vtable_field_offset.bin
header:
+0x0000 | 44 00 00 00 | UOffset32 | 0x00000044 (68) Loc: +0x0044 | offset to root table `AnnotatedBinary.Foo`
+0x0004 | 41 4E 4E 4F | char[4] | ANNO | File Identifier
padding:
+0x0008 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Foo):
+0x000A | 3A 00 | uint16_t | 0x003A (58) | size of this vtable
+0x000C | 68 00 | uint16_t | 0x0068 (104) | size of referring table
+0x000E | 0C 00 | VOffset16 | 0x000C (12) | offset to field `counter` (id: 0)
+0x0010 | 07 00 | VOffset16 | 0x0007 (7) | offset to field `healthy` (id: 1)
+0x0012 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `level` (id: 2) <defaults to 99> (Long)
+0x0014 | 08 00 | VOffset16 | 0x0008 (8) | offset to field `meal` (id: 3)
+0x0016 | FF FF | VOffset16 | 0xFFFF (65535) | ERROR: offset to field `bar` (id: 4). Invalid offset, points to outside the binary.
+0x0018 | 14 00 | VOffset16 | 0x0014 (20) | offset to field `home` (id: 5)
+0x001A | 30 00 | VOffset16 | 0x0030 (48) | offset to field `name` (id: 6)
+0x001C | 34 00 | VOffset16 | 0x0034 (52) | offset to field `bars` (id: 7)
+0x001E | 09 00 | VOffset16 | 0x0009 (9) | offset to field `bar_baz_type` (id: 8)
+0x0020 | 38 00 | VOffset16 | 0x0038 (56) | offset to field `bar_baz` (id: 9)
+0x0022 | 3C 00 | VOffset16 | 0x003C (60) | offset to field `accounts` (id: 10)
+0x0024 | 40 00 | VOffset16 | 0x0040 (64) | offset to field `bob` (id: 11)
+0x0026 | 44 00 | VOffset16 | 0x0044 (68) | offset to field `alice` (id: 12)
+0x0028 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `maybe_i32` (id: 13) <defaults to 0> (Int)
+0x002A | 00 00 | VOffset16 | 0x0000 (0) | offset to field `default_i32` (id: 14) <defaults to 42> (Int)
+0x002C | 48 00 | VOffset16 | 0x0048 (72) | offset to field `just_i32` (id: 15)
+0x002E | 4C 00 | VOffset16 | 0x004C (76) | offset to field `names` (id: 16)
+0x0030 | 50 00 | VOffset16 | 0x0050 (80) | offset to field `points_of_interest` (id: 17)
+0x0032 | 54 00 | VOffset16 | 0x0054 (84) | offset to field `foobars_type` (id: 18)
+0x0034 | 58 00 | VOffset16 | 0x0058 (88) | offset to field `foobars` (id: 19)
+0x0036 | 0A 00 | VOffset16 | 0x000A (10) | offset to field `measurement_type` (id: 20)
+0x0038 | 5C 00 | VOffset16 | 0x005C (92) | offset to field `measurement` (id: 21)
+0x003A | 0B 00 | VOffset16 | 0x000B (11) | offset to field `anything_type` (id: 22)
+0x003C | 60 00 | VOffset16 | 0x0060 (96) | offset to field `anything` (id: 23)
+0x003E | 00 00 | VOffset16 | 0x0000 (0) | offset to field `temperature` (id: 24) <defaults to 98.600000> (Float)
+0x0040 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `teetotaler` (id: 25) <null> (Obj)
+0x0042 | 64 00 | VOffset16 | 0x0064 (100) | offset to field `charlie` (id: 26)
+0x0042 | 64 00 | VOffset16 | 0x0064 (100) | offset to unknown field (id: 26)
root_table (AnnotatedBinary.Foo):
+0x0044 | 3A 00 00 00 | SOffset32 | 0x0000003A (58) Loc: +0x000A | offset to vtable
+0x0048 | 00 00 00 | uint8_t[3] | ... | padding
+0x004B | 01 | uint8_t | 0x01 (1) | table field `healthy` (Bool)
+0x004C | 02 | uint8_t | 0x02 (2) | table field `meal` (Byte)
+0x004D | 02 | UType8 | 0x02 (2) | table field `bar_baz_type` (UType)
+0x004E | 01 | UType8 | 0x01 (1) | table field `measurement_type` (UType)
+0x004F | 01 | UType8 | 0x01 (1) | table field `anything_type` (UType)
+0x0050 | D2 04 00 00 | uint32_t | 0x000004D2 (1234) | table field `counter` (Int)
+0x0054 | 28 02 00 00 | ?uint8_t[4] | (... | WARN: nothing refers to this region.
+0x0058 | 01 00 00 00 | uint32_t | 0x00000001 (1) | struct field `AnnotatedBinary.Building.floors` (Int)
+0x005C | 02 00 00 00 | uint32_t | 0x00000002 (2) | struct field `AnnotatedBinary.Building.doors` (Int)
+0x0060 | 0C 00 00 00 | uint32_t | 0x0000000C (12) | struct field `AnnotatedBinary.Building.windows` (Int)
+0x0064 | 0A 00 00 00 | uint32_t | 0x0000000A (10) | array field `AnnotatedBinary.Dimension.values[0]` (Int)
+0x0068 | 0C 00 00 00 | uint32_t | 0x0000000C (12) | array field `AnnotatedBinary.Dimension.values[1]` (Int)
+0x006C | 14 00 00 00 | uint32_t | 0x00000014 (20) | array field `AnnotatedBinary.Dimension.values[2]` (Int)
+0x0070 | 01 | uint8_t | 0x01 (1) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
+0x0071 | 02 | uint8_t | 0x02 (2) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
+0x0072 | 03 | uint8_t | 0x03 (3) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
+0x0073 | 00 | uint8_t[1] | . | padding
+0x0074 | C8 01 00 00 | UOffset32 | 0x000001C8 (456) Loc: +0x023C | offset to field `name` (string)
+0x0078 | 5C 01 00 00 | UOffset32 | 0x0000015C (348) Loc: +0x01D4 | offset to field `bars` (vector)
+0x007C | 50 01 00 00 | UOffset32 | 0x00000150 (336) Loc: +0x01CC | offset to field `bar_baz` (union of type `Baz`)
+0x0080 | 34 01 00 00 | UOffset32 | 0x00000134 (308) Loc: +0x01B4 | offset to field `accounts` (vector)
+0x0084 | 24 01 00 00 | UOffset32 | 0x00000124 (292) Loc: +0x01A8 | offset to field `bob` (string)
+0x0088 | 14 01 00 00 | UOffset32 | 0x00000114 (276) Loc: +0x019C | offset to field `alice` (string)
+0x008C | 0D 00 00 00 | uint32_t | 0x0000000D (13) | table field `just_i32` (Int)
+0x0090 | DC 00 00 00 | UOffset32 | 0x000000DC (220) Loc: +0x016C | offset to field `names` (vector)
+0x0094 | A0 00 00 00 | UOffset32 | 0x000000A0 (160) Loc: +0x0134 | offset to field `points_of_interest` (vector)
+0x0098 | 94 00 00 00 | UOffset32 | 0x00000094 (148) Loc: +0x012C | offset to field `foobars_type` (vector)
+0x009C | 38 00 00 00 | UOffset32 | 0x00000038 (56) Loc: +0x00D4 | offset to field `foobars` (vector)
+0x00A0 | 33 00 00 00 | UOffset32 | 0x00000033 (51) Loc: +0x00D3 | offset to field `measurement` (union of type `Tolerance`)
+0x00A4 | 1C 00 00 00 | UOffset32 | 0x0000001C (28) Loc: +0x00C0 | offset to field `anything` (union of type `Bar`)
+0x00A8 | 04 00 00 00 | UOffset32 | 0x00000004 (4) Loc: +0x00AC | offset to field `charlie` (string)
string (AnnotatedBinary.Foo.charlie):
+0x00AC | 05 00 00 00 | uint32_t | 0x00000005 (5) | length of string
+0x00B0 | 61 6C 69 63 65 | char[5] | alice
+0x00B5 | 00 | char | 0x00 (0) | string terminator
padding:
+0x00B6 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Bar):
+0x00B8 | 08 00 | uint16_t | 0x0008 (8) | size of this vtable
+0x00BA | 13 00 | uint16_t | 0x0013 (19) | size of referring table
+0x00BC | 08 00 | VOffset16 | 0x0008 (8) | offset to field `a` (id: 0)
+0x00BE | 04 00 | VOffset16 | 0x0004 (4) | offset to field `b` (id: 1)
table (AnnotatedBinary.Bar):
+0x00C0 | 08 00 00 00 | SOffset32 | 0x00000008 (8) Loc: +0x00B8 | offset to vtable
+0x00C4 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float)
+0x00C8 | 00 00 00 00 00 10 74 40 | double | 0x4074100000000000 (321.000000) | table field `a` (Double)
+0x00D0 | 00 00 00 | uint8_t[3] | ... | padding
union (AnnotatedBinary.Tolerance.measurement):
+0x00D3 | 05 | uint8_t | 0x05 (5) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
vector (AnnotatedBinary.Foo.foobars):
+0x00D4 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x00D8 | 34 00 00 00 | UOffset32 | 0x00000034 (52) Loc: +0x010C | offset to union[0] (`Bar`)
+0x00DC | 2C 00 00 00 | UOffset32 | 0x0000002C (44) Loc: +0x0108 | offset to union[1] (`Baz`)
+0x00E0 | 04 00 00 00 | UOffset32 | 0x00000004 (4) Loc: +0x00E4 | offset to union[2] (`Bar`)
table (AnnotatedBinary.Bar):
+0x00E4 | D2 FE FF FF | SOffset32 | 0xFFFFFED2 (-302) Loc: +0x0212 | offset to vtable
+0x00E8 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float)
+0x00EC | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x00FC | offset to field `c` (table)
+0x00F0 | 00 00 00 00 00 D8 8E 40 | double | 0x408ED80000000000 (987.000000) | table field `a` (Double)
+0x00F8 | 00 00 00 00 | uint8_t[4] | .... | padding
table (AnnotatedBinary.Baz):
+0x00FC | 6A FE FF FF | SOffset32 | 0xFFFFFE6A (-406) Loc: +0x0292 | offset to vtable
+0x0100 | 00 00 00 | uint8_t[3] | ... | padding
+0x0103 | 03 | uint8_t | 0x03 (3) | table field `meal` (Byte)
vtable (AnnotatedBinary.Baz):
+0x0104 | 04 00 | uint16_t | 0x0004 (4) | size of this vtable
+0x0106 | 04 00 | uint16_t | 0x0004 (4) | size of referring table
table (AnnotatedBinary.Baz):
+0x0108 | 04 00 00 00 | SOffset32 | 0x00000004 (4) Loc: +0x0104 | offset to vtable
table (AnnotatedBinary.Bar):
+0x010C | FA FE FF FF | SOffset32 | 0xFFFFFEFA (-262) Loc: +0x0212 | offset to vtable
+0x0110 | 00 00 E4 43 | float | 0x43E40000 (456.000000) | table field `b` (Float)
+0x0114 | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x0124 | offset to field `c` (table)
+0x0118 | 00 00 00 00 00 C0 5E 40 | double | 0x405EC00000000000 (123.000000) | table field `a` (Double)
+0x0120 | 00 00 00 00 | uint8_t[4] | .... | padding
table (AnnotatedBinary.Baz):
+0x0124 | 92 FE FF FF | SOffset32 | 0xFFFFFE92 (-366) Loc: +0x0292 | offset to vtable
+0x0128 | 00 00 00 | uint8_t[3] | ... | padding
+0x012B | 01 | uint8_t | 0x01 (1) | table field `meal` (Byte)
vector (AnnotatedBinary.Foo.foobars_type):
+0x012C | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x0130 | 01 | UType8 | 0x01 (1) | value[0]
+0x0131 | 02 | UType8 | 0x02 (2) | value[1]
+0x0132 | 01 | UType8 | 0x01 (1) | value[2]
vector (AnnotatedBinary.Foo.points_of_interest):
+0x0134 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x0138 | 33 33 33 33 33 A3 45 40 | double | 0x4045A33333333333 (43.275000) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0140 | 7E 57 04 FF 5B 87 53 C0 | double | 0xC053875BFF04577E (-78.114990) | struct field `AnnotatedBinary.Location.longitude` (Double)
+0x0148 | 8D F0 F6 20 04 B6 42 40 | double | 0x4042B60420F6F08D (37.422001) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0150 | 9F 77 63 41 61 85 5E C0 | double | 0xC05E85614163779F (-122.084061) | struct field `AnnotatedBinary.Location.longitude` (Double)
+0x0158 | 8F 35 23 83 DC 35 4B C0 | double | 0xC04B35DC8323358F (-54.420792) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0160 | F6 97 DD 93 87 C5 0A 40 | double | 0x400AC58793DD97F6 (3.346450) | struct field `AnnotatedBinary.Location.longitude` (Double)
padding:
+0x0168 | 00 00 00 00 | uint8_t[4] | .... | padding
vector (AnnotatedBinary.Foo.names):
+0x016C | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x0170 | 20 00 00 00 | UOffset32 | 0x00000020 (32) Loc: +0x0190 | offset to string[0]
+0x0174 | 14 00 00 00 | UOffset32 | 0x00000014 (20) Loc: +0x0188 | offset to string[1]
+0x0178 | 04 00 00 00 | UOffset32 | 0x00000004 (4) Loc: +0x017C | offset to string[2]
string (AnnotatedBinary.Foo.names):
+0x017C | 07 00 00 00 | uint32_t | 0x00000007 (7) | length of string
+0x0180 | 63 68 61 72 6C 69 65 | char[7] | charlie
+0x0187 | 00 | char | 0x00 (0) | string terminator
string (AnnotatedBinary.Foo.names):
+0x0188 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of string
+0x018C | 62 6F 62 | char[3] | bob
+0x018F | 00 | char | 0x00 (0) | string terminator
string (AnnotatedBinary.Foo.names):
+0x0190 | 05 00 00 00 | uint32_t | 0x00000005 (5) | length of string
+0x0194 | 61 6C 69 63 65 | char[5] | alice
+0x0199 | 00 | char | 0x00 (0) | string terminator
padding:
+0x019A | 00 00 | uint8_t[2] | .. | padding
string (AnnotatedBinary.Foo.alice):
+0x019C | 07 00 00 00 | uint32_t | 0x00000007 (7) | length of string
+0x01A0 | 63 68 61 72 6C 69 65 | char[7] | charlie
+0x01A7 | 00 | char | 0x00 (0) | string terminator
string (AnnotatedBinary.Foo.bob):
+0x01A8 | 07 00 00 00 | uint32_t | 0x00000007 (7) | length of string
+0x01AC | 63 68 61 72 6C 69 65 | char[7] | charlie
+0x01B3 | 00 | char | 0x00 (0) | string terminator
vector (AnnotatedBinary.Foo.accounts):
+0x01B4 | 09 00 00 00 | uint32_t | 0x00000009 (9) | length of vector (# items)
+0x01B8 | 09 00 | uint16_t | 0x0009 (9) | value[0]
+0x01BA | 08 00 | uint16_t | 0x0008 (8) | value[1]
+0x01BC | 07 00 | uint16_t | 0x0007 (7) | value[2]
+0x01BE | 01 00 | uint16_t | 0x0001 (1) | value[3]
+0x01C0 | 02 00 | uint16_t | 0x0002 (2) | value[4]
+0x01C2 | 03 00 | uint16_t | 0x0003 (3) | value[5]
+0x01C4 | 06 00 | uint16_t | 0x0006 (6) | value[6]
+0x01C6 | 05 00 | uint16_t | 0x0005 (5) | value[7]
+0x01C8 | 04 00 | uint16_t | 0x0004 (4) | value[8]
padding:
+0x01CA | 00 00 | uint8_t[2] | .. | padding
table (AnnotatedBinary.Baz):
+0x01CC | 3A FF FF FF | SOffset32 | 0xFFFFFF3A (-198) Loc: +0x0292 | offset to vtable
+0x01D0 | 00 00 00 | uint8_t[3] | ... | padding
+0x01D3 | 03 | uint8_t | 0x03 (3) | table field `meal` (Byte)
vector (AnnotatedBinary.Foo.bars):
+0x01D4 | 02 00 00 00 | uint32_t | 0x00000002 (2) | length of vector (# items)
+0x01D8 | 44 00 00 00 | UOffset32 | 0x00000044 (68) Loc: +0x021C | offset to table[0]
+0x01DC | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x01EC | offset to table[1]
padding:
+0x01E0 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Bar):
+0x01E2 | 0A 00 | uint16_t | 0x000A (10) | size of this vtable
+0x01E4 | 1A 00 | uint16_t | 0x001A (26) | size of referring table
+0x01E6 | 0C 00 | VOffset16 | 0x000C (12) | offset to field `a` (id: 0)
+0x01E8 | 04 00 | VOffset16 | 0x0004 (4) | offset to field `b` (id: 1)
+0x01EA | 08 00 | VOffset16 | 0x0008 (8) | offset to field `c` (id: 2)
table (AnnotatedBinary.Bar):
+0x01EC | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x01E2 | offset to vtable
+0x01F0 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float)
+0x01F4 | 18 00 00 00 | UOffset32 | 0x00000018 (24) Loc: +0x020C | offset to field `c` (table)
+0x01F8 | 00 00 00 00 00 D8 8E 40 | double | 0x408ED80000000000 (987.000000) | table field `a` (Double)
+0x0200 | 00 00 00 00 00 00 | uint8_t[6] | ...... | padding
vtable (AnnotatedBinary.Baz):
+0x0206 | 06 00 | uint16_t | 0x0006 (6) | size of this vtable
+0x0208 | 06 00 | uint16_t | 0x0006 (6) | size of referring table
+0x020A | 05 00 | VOffset16 | 0x0005 (5) | offset to field `meal` (id: 0)
table (AnnotatedBinary.Baz):
+0x020C | 06 00 00 00 | SOffset32 | 0x00000006 (6) Loc: +0x0206 | offset to vtable
+0x0210 | 00 | uint8_t[1] | . | padding
+0x0211 | 03 | uint8_t | 0x03 (3) | table field `meal` (Byte)
vtable (AnnotatedBinary.Bar):
+0x0212 | 0A 00 | uint16_t | 0x000A (10) | size of this vtable
+0x0214 | 18 00 | uint16_t | 0x0018 (24) | size of referring table
+0x0216 | 0C 00 | VOffset16 | 0x000C (12) | offset to field `a` (id: 0)
+0x0218 | 04 00 | VOffset16 | 0x0004 (4) | offset to field `b` (id: 1)
+0x021A | 08 00 | VOffset16 | 0x0008 (8) | offset to field `c` (id: 2)
table (AnnotatedBinary.Bar):
+0x021C | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x0212 | offset to vtable
+0x0220 | 00 00 E4 43 | float | 0x43E40000 (456.000000) | table field `b` (Float)
+0x0224 | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x0234 | offset to field `c` (table)
+0x0228 | 00 00 00 00 00 C0 5E 40 | double | 0x405EC00000000000 (123.000000) | table field `a` (Double)
+0x0230 | 00 00 00 00 | uint8_t[4] | .... | padding
table (AnnotatedBinary.Baz):
+0x0234 | A2 FF FF FF | SOffset32 | 0xFFFFFFA2 (-94) Loc: +0x0292 | offset to vtable
+0x0238 | 00 00 00 | uint8_t[3] | ... | padding
+0x023B | 01 | uint8_t | 0x01 (1) | table field `meal` (Byte)
string (AnnotatedBinary.Foo.name):
+0x023C | 2F 00 00 00 | uint32_t | 0x0000002F (47) | length of string
+0x0240 | 54 68 69 73 20 69 73 20 | char[47] | This is
+0x0248 | 61 20 6C 6F 6E 67 20 73 | | a long s
+0x0250 | 74 72 69 6E 67 20 74 6F | | tring to
+0x0258 | 20 73 68 6F 77 20 68 6F | | show ho
+0x0260 | 77 20 69 74 20 62 72 65 | | w it bre
+0x0268 | 61 6B 73 20 75 70 2E | | aks up.
+0x026F | 00 | char | 0x00 (0) | string terminator
unknown (no known references):
+0x0270 | 00 00 0A 00 16 00 0C 00 | ?uint8_t[34] | ........ | WARN: nothing refers to this section.
+0x0278 | 04 00 08 00 0A 00 00 00 | | ........
+0x0280 | 65 20 71 49 14 00 00 00 | | e qI....
+0x0288 | C9 76 BE 9F 0C 24 FE 40 | | .v...$.@
+0x0290 | 00 00 | | ..
vtable (AnnotatedBinary.Baz):
+0x0292 | 06 00 | uint16_t | 0x0006 (6) | size of this vtable
+0x0294 | 08 00 | uint16_t | 0x0008 (8) | size of referring table
+0x0296 | 07 00 | VOffset16 | 0x0007 (7) | offset to field `meal` (id: 0)
unknown (no known references):
+0x0298 | 06 00 00 00 00 00 00 01 | ?uint8_t[8] | ........ | WARN: nothing refers to this section.

View File

@@ -0,0 +1,360 @@
// Annotated Flatbuffer Binary
//
// Schema file: annotated_binary.fbs
// Binary file: tests/invalid_vtable_ref_table_size.bin
header:
+0x0000 | 44 00 00 00 | UOffset32 | 0x00000044 (68) Loc: +0x0044 | offset to root table `AnnotatedBinary.Foo`
+0x0004 | 41 4E 4E 4F | char[4] | ANNO | File Identifier
padding:
+0x0008 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Foo):
+0x000A | 3A 00 | uint16_t | 0x003A (58) | size of this vtable
+0x000C | FF FF | uint16_t | 0xFFFF (65535) | ERROR: size of referring table. Size of table is larger than the binary.
+0x000E | 0C 00 | VOffset16 | 0x000C (12) | offset to field `counter` (id: 0)
+0x0010 | 07 00 | VOffset16 | 0x0007 (7) | offset to field `healthy` (id: 1)
+0x0012 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `level` (id: 2) <defaults to 99> (Long)
+0x0014 | 08 00 | VOffset16 | 0x0008 (8) | offset to field `meal` (id: 3)
+0x0016 | 10 00 | VOffset16 | 0x0010 (16) | offset to field `bar` (id: 4)
+0x0018 | 14 00 | VOffset16 | 0x0014 (20) | offset to field `home` (id: 5)
+0x001A | 30 00 | VOffset16 | 0x0030 (48) | offset to field `name` (id: 6)
+0x001C | 34 00 | VOffset16 | 0x0034 (52) | offset to field `bars` (id: 7)
+0x001E | 09 00 | VOffset16 | 0x0009 (9) | offset to field `bar_baz_type` (id: 8)
+0x0020 | 38 00 | VOffset16 | 0x0038 (56) | offset to field `bar_baz` (id: 9)
+0x0022 | 3C 00 | VOffset16 | 0x003C (60) | offset to field `accounts` (id: 10)
+0x0024 | 40 00 | VOffset16 | 0x0040 (64) | offset to field `bob` (id: 11)
+0x0026 | 44 00 | VOffset16 | 0x0044 (68) | offset to field `alice` (id: 12)
+0x0028 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `maybe_i32` (id: 13) <defaults to 0> (Int)
+0x002A | 00 00 | VOffset16 | 0x0000 (0) | offset to field `default_i32` (id: 14) <defaults to 42> (Int)
+0x002C | 48 00 | VOffset16 | 0x0048 (72) | offset to field `just_i32` (id: 15)
+0x002E | 4C 00 | VOffset16 | 0x004C (76) | offset to field `names` (id: 16)
+0x0030 | 50 00 | VOffset16 | 0x0050 (80) | offset to field `points_of_interest` (id: 17)
+0x0032 | 54 00 | VOffset16 | 0x0054 (84) | offset to field `foobars_type` (id: 18)
+0x0034 | 58 00 | VOffset16 | 0x0058 (88) | offset to field `foobars` (id: 19)
+0x0036 | 0A 00 | VOffset16 | 0x000A (10) | offset to field `measurement_type` (id: 20)
+0x0038 | 5C 00 | VOffset16 | 0x005C (92) | offset to field `measurement` (id: 21)
+0x003A | 0B 00 | VOffset16 | 0x000B (11) | offset to field `anything_type` (id: 22)
+0x003C | 60 00 | VOffset16 | 0x0060 (96) | offset to field `anything` (id: 23)
+0x003E | 00 00 | VOffset16 | 0x0000 (0) | offset to field `temperature` (id: 24) <defaults to 98.600000> (Float)
+0x0040 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `teetotaler` (id: 25) <null> (Obj)
+0x0042 | 64 00 | VOffset16 | 0x0064 (100) | offset to field `charlie` (id: 26)
root_table (AnnotatedBinary.Foo):
+0x0044 | 3A 00 00 00 | SOffset32 | 0x0000003A (58) Loc: +0x000A | offset to vtable
+0x0048 | 00 00 00 | uint8_t[3] | ... | padding
+0x004B | 01 | uint8_t | 0x01 (1) | table field `healthy` (Bool)
+0x004C | 02 | uint8_t | 0x02 (2) | table field `meal` (Byte)
+0x004D | 02 | UType8 | 0x02 (2) | table field `bar_baz_type` (UType)
+0x004E | 01 | UType8 | 0x01 (1) | table field `measurement_type` (UType)
+0x004F | 01 | UType8 | 0x01 (1) | table field `anything_type` (UType)
+0x0050 | D2 04 00 00 | uint32_t | 0x000004D2 (1234) | table field `counter` (Int)
+0x0054 | 28 02 00 00 | UOffset32 | 0x00000228 (552) Loc: +0x027C | offset to field `bar` (table)
+0x0058 | 01 00 00 00 | uint32_t | 0x00000001 (1) | struct field `AnnotatedBinary.Building.floors` (Int)
+0x005C | 02 00 00 00 | uint32_t | 0x00000002 (2) | struct field `AnnotatedBinary.Building.doors` (Int)
+0x0060 | 0C 00 00 00 | uint32_t | 0x0000000C (12) | struct field `AnnotatedBinary.Building.windows` (Int)
+0x0064 | 0A 00 00 00 | uint32_t | 0x0000000A (10) | array field `AnnotatedBinary.Dimension.values[0]` (Int)
+0x0068 | 0C 00 00 00 | uint32_t | 0x0000000C (12) | array field `AnnotatedBinary.Dimension.values[1]` (Int)
+0x006C | 14 00 00 00 | uint32_t | 0x00000014 (20) | array field `AnnotatedBinary.Dimension.values[2]` (Int)
+0x0070 | 01 | uint8_t | 0x01 (1) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
+0x0071 | 02 | uint8_t | 0x02 (2) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
+0x0072 | 03 | uint8_t | 0x03 (3) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
+0x0073 | 00 | uint8_t[1] | . | padding
+0x0074 | C8 01 00 00 | UOffset32 | 0x000001C8 (456) Loc: +0x023C | offset to field `name` (string)
+0x0078 | 5C 01 00 00 | UOffset32 | 0x0000015C (348) Loc: +0x01D4 | offset to field `bars` (vector)
+0x007C | 50 01 00 00 | UOffset32 | 0x00000150 (336) Loc: +0x01CC | offset to field `bar_baz` (union of type `Baz`)
+0x0080 | 34 01 00 00 | UOffset32 | 0x00000134 (308) Loc: +0x01B4 | offset to field `accounts` (vector)
+0x0084 | 24 01 00 00 | UOffset32 | 0x00000124 (292) Loc: +0x01A8 | offset to field `bob` (string)
+0x0088 | 14 01 00 00 | UOffset32 | 0x00000114 (276) Loc: +0x019C | offset to field `alice` (string)
+0x008C | 0D 00 00 00 | uint32_t | 0x0000000D (13) | table field `just_i32` (Int)
+0x0090 | DC 00 00 00 | UOffset32 | 0x000000DC (220) Loc: +0x016C | offset to field `names` (vector)
+0x0094 | A0 00 00 00 | UOffset32 | 0x000000A0 (160) Loc: +0x0134 | offset to field `points_of_interest` (vector)
+0x0098 | 94 00 00 00 | UOffset32 | 0x00000094 (148) Loc: +0x012C | offset to field `foobars_type` (vector)
+0x009C | 38 00 00 00 | UOffset32 | 0x00000038 (56) Loc: +0x00D4 | offset to field `foobars` (vector)
+0x00A0 | 33 00 00 00 | UOffset32 | 0x00000033 (51) Loc: +0x00D3 | offset to field `measurement` (union of type `Tolerance`)
+0x00A4 | 1C 00 00 00 | UOffset32 | 0x0000001C (28) Loc: +0x00C0 | offset to field `anything` (union of type `Bar`)
+0x00A8 | 04 00 00 00 | UOffset32 | 0x00000004 (4) Loc: +0x00AC | offset to field `charlie` (string)
+0x00AC | 05 00 00 00 61 6C 69 63 | uint8_t[500] | ....alic | padding
+0x00B4 | 65 00 00 00 08 00 13 00 | | e.......
+0x00BC | 08 00 04 00 08 00 00 00 | | ........
+0x00C4 | 00 80 23 44 00 00 00 00 | | ..#D....
+0x00CC | 00 10 74 40 00 00 00 05 | | ..t@....
+0x00D4 | 03 00 00 00 34 00 00 00 | | ....4...
+0x00DC | 2C 00 00 00 04 00 00 00 | | ,.......
+0x00E4 | D2 FE FF FF 00 80 23 44 | | ......#D
+0x00EC | 10 00 00 00 00 00 00 00 | | ........
+0x00F4 | 00 D8 8E 40 00 00 00 00 | | ...@....
+0x00FC | 6A FE FF FF 00 00 00 03 | | j.......
+0x0104 | 04 00 04 00 04 00 00 00 | | ........
+0x010C | FA FE FF FF 00 00 E4 43 | | .......C
+0x0114 | 10 00 00 00 00 00 00 00 | | ........
+0x011C | 00 C0 5E 40 00 00 00 00 | | ..^@....
+0x0124 | 92 FE FF FF 00 00 00 01 | | ........
+0x012C | 03 00 00 00 01 02 01 00 | | ........
+0x0134 | 03 00 00 00 33 33 33 33 | | ....3333
+0x013C | 33 A3 45 40 7E 57 04 FF | | 3.E@~W..
+0x0144 | 5B 87 53 C0 8D F0 F6 20 | | [.S....
+0x014C | 04 B6 42 40 9F 77 63 41 | | ..B@.wcA
+0x0154 | 61 85 5E C0 8F 35 23 83 | | a.^..5#.
+0x015C | DC 35 4B C0 F6 97 DD 93 | | .5K.....
+0x0164 | 87 C5 0A 40 00 00 00 00 | | ...@....
+0x016C | 03 00 00 00 20 00 00 00 | | .... ...
+0x0174 | 14 00 00 00 04 00 00 00 | | ........
+0x017C | 07 00 00 00 63 68 61 72 | | ....char
+0x0184 | 6C 69 65 00 03 00 00 00 | | lie.....
+0x018C | 62 6F 62 00 05 00 00 00 | | bob.....
+0x0194 | 61 6C 69 63 65 00 00 00 | | alice...
+0x019C | 07 00 00 00 63 68 61 72 | | ....char
+0x01A4 | 6C 69 65 00 07 00 00 00 | | lie.....
+0x01AC | 63 68 61 72 6C 69 65 00 | | charlie.
+0x01B4 | 09 00 00 00 09 00 08 00 | | ........
+0x01BC | 07 00 01 00 02 00 03 00 | | ........
+0x01C4 | 06 00 05 00 04 00 00 00 | | ........
+0x01CC | 3A FF FF FF 00 00 00 03 | | :.......
+0x01D4 | 02 00 00 00 44 00 00 00 | | ....D...
+0x01DC | 10 00 00 00 00 00 0A 00 | | ........
+0x01E4 | 1A 00 0C 00 04 00 08 00 | | ........
+0x01EC | 0A 00 00 00 00 80 23 44 | | ......#D
+0x01F4 | 18 00 00 00 00 00 00 00 | | ........
+0x01FC | 00 D8 8E 40 00 00 00 00 | | ...@....
+0x0204 | 00 00 06 00 06 00 05 00 | | ........
+0x020C | 06 00 00 00 00 03 0A 00 | | ........
+0x0214 | 18 00 0C 00 04 00 08 00 | | ........
+0x021C | 0A 00 00 00 00 00 E4 43 | | .......C
+0x0224 | 10 00 00 00 00 00 00 00 | | ........
+0x022C | 00 C0 5E 40 00 00 00 00 | | ..^@....
+0x0234 | A2 FF FF FF 00 00 00 01 | | ........
+0x023C | 2F 00 00 00 54 68 69 73 | | /...This
+0x0244 | 20 69 73 20 61 20 6C 6F | | is a lo
+0x024C | 6E 67 20 73 74 72 69 6E | | ng strin
+0x0254 | 67 20 74 6F 20 73 68 6F | | g to sho
+0x025C | 77 20 68 6F 77 20 69 74 | | w how it
+0x0264 | 20 62 72 65 61 6B 73 20 | | breaks
+0x026C | 75 70 2E 00 00 00 0A 00 | | up......
+0x0274 | 16 00 0C 00 04 00 08 00 | | ........
+0x027C | 0A 00 00 00 65 20 71 49 | | ....e qI
+0x0284 | 14 00 00 00 C9 76 BE 9F | | .....v..
+0x028C | 0C 24 FE 40 00 00 06 00 | | .$.@....
+0x0294 | 08 00 07 00 06 00 00 00 | | ........
+0x029C | 00 00 00 01 | | ....
string (AnnotatedBinary.Foo.charlie):
+0x00AC | 05 00 00 00 | uint32_t | 0x00000005 (5) | length of string
+0x00B0 | 61 6C 69 63 65 | char[5] | alice
+0x00B5 | 00 | char | 0x00 (0) | string terminator
padding:
+0x00B6 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Bar):
+0x00B8 | 08 00 | uint16_t | 0x0008 (8) | size of this vtable
+0x00BA | 13 00 | uint16_t | 0x0013 (19) | size of referring table
+0x00BC | 08 00 | VOffset16 | 0x0008 (8) | offset to field `a` (id: 0)
+0x00BE | 04 00 | VOffset16 | 0x0004 (4) | offset to field `b` (id: 1)
table (AnnotatedBinary.Bar):
+0x00C0 | 08 00 00 00 | SOffset32 | 0x00000008 (8) Loc: +0x00B8 | offset to vtable
+0x00C4 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float)
+0x00C8 | 00 00 00 00 00 10 74 40 | double | 0x4074100000000000 (321.000000) | table field `a` (Double)
+0x00D0 | 00 00 00 | uint8_t[3] | ... | padding
union (AnnotatedBinary.Tolerance.measurement):
+0x00D3 | 05 | uint8_t | 0x05 (5) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
vector (AnnotatedBinary.Foo.foobars):
+0x00D4 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x00D8 | 34 00 00 00 | UOffset32 | 0x00000034 (52) Loc: +0x010C | offset to union[0] (`Bar`)
+0x00DC | 2C 00 00 00 | UOffset32 | 0x0000002C (44) Loc: +0x0108 | offset to union[1] (`Baz`)
+0x00E0 | 04 00 00 00 | UOffset32 | 0x00000004 (4) Loc: +0x00E4 | offset to union[2] (`Bar`)
table (AnnotatedBinary.Bar):
+0x00E4 | D2 FE FF FF | SOffset32 | 0xFFFFFED2 (-302) Loc: +0x0212 | offset to vtable
+0x00E8 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float)
+0x00EC | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x00FC | offset to field `c` (table)
+0x00F0 | 00 00 00 00 00 D8 8E 40 | double | 0x408ED80000000000 (987.000000) | table field `a` (Double)
+0x00F8 | 00 00 00 00 | uint8_t[4] | .... | padding
table (AnnotatedBinary.Baz):
+0x00FC | 6A FE FF FF | SOffset32 | 0xFFFFFE6A (-406) Loc: +0x0292 | offset to vtable
+0x0100 | 00 00 00 | uint8_t[3] | ... | padding
+0x0103 | 03 | uint8_t | 0x03 (3) | table field `meal` (Byte)
vtable (AnnotatedBinary.Baz):
+0x0104 | 04 00 | uint16_t | 0x0004 (4) | size of this vtable
+0x0106 | 04 00 | uint16_t | 0x0004 (4) | size of referring table
table (AnnotatedBinary.Baz):
+0x0108 | 04 00 00 00 | SOffset32 | 0x00000004 (4) Loc: +0x0104 | offset to vtable
table (AnnotatedBinary.Bar):
+0x010C | FA FE FF FF | SOffset32 | 0xFFFFFEFA (-262) Loc: +0x0212 | offset to vtable
+0x0110 | 00 00 E4 43 | float | 0x43E40000 (456.000000) | table field `b` (Float)
+0x0114 | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x0124 | offset to field `c` (table)
+0x0118 | 00 00 00 00 00 C0 5E 40 | double | 0x405EC00000000000 (123.000000) | table field `a` (Double)
+0x0120 | 00 00 00 00 | uint8_t[4] | .... | padding
table (AnnotatedBinary.Baz):
+0x0124 | 92 FE FF FF | SOffset32 | 0xFFFFFE92 (-366) Loc: +0x0292 | offset to vtable
+0x0128 | 00 00 00 | uint8_t[3] | ... | padding
+0x012B | 01 | uint8_t | 0x01 (1) | table field `meal` (Byte)
vector (AnnotatedBinary.Foo.foobars_type):
+0x012C | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x0130 | 01 | UType8 | 0x01 (1) | value[0]
+0x0131 | 02 | UType8 | 0x02 (2) | value[1]
+0x0132 | 01 | UType8 | 0x01 (1) | value[2]
vector (AnnotatedBinary.Foo.points_of_interest):
+0x0134 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x0138 | 33 33 33 33 33 A3 45 40 | double | 0x4045A33333333333 (43.275000) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0140 | 7E 57 04 FF 5B 87 53 C0 | double | 0xC053875BFF04577E (-78.114990) | struct field `AnnotatedBinary.Location.longitude` (Double)
+0x0148 | 8D F0 F6 20 04 B6 42 40 | double | 0x4042B60420F6F08D (37.422001) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0150 | 9F 77 63 41 61 85 5E C0 | double | 0xC05E85614163779F (-122.084061) | struct field `AnnotatedBinary.Location.longitude` (Double)
+0x0158 | 8F 35 23 83 DC 35 4B C0 | double | 0xC04B35DC8323358F (-54.420792) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0160 | F6 97 DD 93 87 C5 0A 40 | double | 0x400AC58793DD97F6 (3.346450) | struct field `AnnotatedBinary.Location.longitude` (Double)
padding:
+0x0168 | 00 00 00 00 | uint8_t[4] | .... | padding
vector (AnnotatedBinary.Foo.names):
+0x016C | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x0170 | 20 00 00 00 | UOffset32 | 0x00000020 (32) Loc: +0x0190 | offset to string[0]
+0x0174 | 14 00 00 00 | UOffset32 | 0x00000014 (20) Loc: +0x0188 | offset to string[1]
+0x0178 | 04 00 00 00 | UOffset32 | 0x00000004 (4) Loc: +0x017C | offset to string[2]
string (AnnotatedBinary.Foo.names):
+0x017C | 07 00 00 00 | uint32_t | 0x00000007 (7) | length of string
+0x0180 | 63 68 61 72 6C 69 65 | char[7] | charlie
+0x0187 | 00 | char | 0x00 (0) | string terminator
string (AnnotatedBinary.Foo.names):
+0x0188 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of string
+0x018C | 62 6F 62 | char[3] | bob
+0x018F | 00 | char | 0x00 (0) | string terminator
string (AnnotatedBinary.Foo.names):
+0x0190 | 05 00 00 00 | uint32_t | 0x00000005 (5) | length of string
+0x0194 | 61 6C 69 63 65 | char[5] | alice
+0x0199 | 00 | char | 0x00 (0) | string terminator
padding:
+0x019A | 00 00 | uint8_t[2] | .. | padding
string (AnnotatedBinary.Foo.alice):
+0x019C | 07 00 00 00 | uint32_t | 0x00000007 (7) | length of string
+0x01A0 | 63 68 61 72 6C 69 65 | char[7] | charlie
+0x01A7 | 00 | char | 0x00 (0) | string terminator
string (AnnotatedBinary.Foo.bob):
+0x01A8 | 07 00 00 00 | uint32_t | 0x00000007 (7) | length of string
+0x01AC | 63 68 61 72 6C 69 65 | char[7] | charlie
+0x01B3 | 00 | char | 0x00 (0) | string terminator
vector (AnnotatedBinary.Foo.accounts):
+0x01B4 | 09 00 00 00 | uint32_t | 0x00000009 (9) | length of vector (# items)
+0x01B8 | 09 00 | uint16_t | 0x0009 (9) | value[0]
+0x01BA | 08 00 | uint16_t | 0x0008 (8) | value[1]
+0x01BC | 07 00 | uint16_t | 0x0007 (7) | value[2]
+0x01BE | 01 00 | uint16_t | 0x0001 (1) | value[3]
+0x01C0 | 02 00 | uint16_t | 0x0002 (2) | value[4]
+0x01C2 | 03 00 | uint16_t | 0x0003 (3) | value[5]
+0x01C4 | 06 00 | uint16_t | 0x0006 (6) | value[6]
+0x01C6 | 05 00 | uint16_t | 0x0005 (5) | value[7]
+0x01C8 | 04 00 | uint16_t | 0x0004 (4) | value[8]
padding:
+0x01CA | 00 00 | uint8_t[2] | .. | padding
table (AnnotatedBinary.Baz):
+0x01CC | 3A FF FF FF | SOffset32 | 0xFFFFFF3A (-198) Loc: +0x0292 | offset to vtable
+0x01D0 | 00 00 00 | uint8_t[3] | ... | padding
+0x01D3 | 03 | uint8_t | 0x03 (3) | table field `meal` (Byte)
vector (AnnotatedBinary.Foo.bars):
+0x01D4 | 02 00 00 00 | uint32_t | 0x00000002 (2) | length of vector (# items)
+0x01D8 | 44 00 00 00 | UOffset32 | 0x00000044 (68) Loc: +0x021C | offset to table[0]
+0x01DC | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x01EC | offset to table[1]
padding:
+0x01E0 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Bar):
+0x01E2 | 0A 00 | uint16_t | 0x000A (10) | size of this vtable
+0x01E4 | 1A 00 | uint16_t | 0x001A (26) | size of referring table
+0x01E6 | 0C 00 | VOffset16 | 0x000C (12) | offset to field `a` (id: 0)
+0x01E8 | 04 00 | VOffset16 | 0x0004 (4) | offset to field `b` (id: 1)
+0x01EA | 08 00 | VOffset16 | 0x0008 (8) | offset to field `c` (id: 2)
table (AnnotatedBinary.Bar):
+0x01EC | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x01E2 | offset to vtable
+0x01F0 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float)
+0x01F4 | 18 00 00 00 | UOffset32 | 0x00000018 (24) Loc: +0x020C | offset to field `c` (table)
+0x01F8 | 00 00 00 00 00 D8 8E 40 | double | 0x408ED80000000000 (987.000000) | table field `a` (Double)
+0x0200 | 00 00 00 00 00 00 | uint8_t[6] | ...... | padding
vtable (AnnotatedBinary.Baz):
+0x0206 | 06 00 | uint16_t | 0x0006 (6) | size of this vtable
+0x0208 | 06 00 | uint16_t | 0x0006 (6) | size of referring table
+0x020A | 05 00 | VOffset16 | 0x0005 (5) | offset to field `meal` (id: 0)
table (AnnotatedBinary.Baz):
+0x020C | 06 00 00 00 | SOffset32 | 0x00000006 (6) Loc: +0x0206 | offset to vtable
+0x0210 | 00 | uint8_t[1] | . | padding
+0x0211 | 03 | uint8_t | 0x03 (3) | table field `meal` (Byte)
vtable (AnnotatedBinary.Bar):
+0x0212 | 0A 00 | uint16_t | 0x000A (10) | size of this vtable
+0x0214 | 18 00 | uint16_t | 0x0018 (24) | size of referring table
+0x0216 | 0C 00 | VOffset16 | 0x000C (12) | offset to field `a` (id: 0)
+0x0218 | 04 00 | VOffset16 | 0x0004 (4) | offset to field `b` (id: 1)
+0x021A | 08 00 | VOffset16 | 0x0008 (8) | offset to field `c` (id: 2)
table (AnnotatedBinary.Bar):
+0x021C | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x0212 | offset to vtable
+0x0220 | 00 00 E4 43 | float | 0x43E40000 (456.000000) | table field `b` (Float)
+0x0224 | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x0234 | offset to field `c` (table)
+0x0228 | 00 00 00 00 00 C0 5E 40 | double | 0x405EC00000000000 (123.000000) | table field `a` (Double)
+0x0230 | 00 00 00 00 | uint8_t[4] | .... | padding
table (AnnotatedBinary.Baz):
+0x0234 | A2 FF FF FF | SOffset32 | 0xFFFFFFA2 (-94) Loc: +0x0292 | offset to vtable
+0x0238 | 00 00 00 | uint8_t[3] | ... | padding
+0x023B | 01 | uint8_t | 0x01 (1) | table field `meal` (Byte)
string (AnnotatedBinary.Foo.name):
+0x023C | 2F 00 00 00 | uint32_t | 0x0000002F (47) | length of string
+0x0240 | 54 68 69 73 20 69 73 20 | char[47] | This is
+0x0248 | 61 20 6C 6F 6E 67 20 73 | | a long s
+0x0250 | 74 72 69 6E 67 20 74 6F | | tring to
+0x0258 | 20 73 68 6F 77 20 68 6F | | show ho
+0x0260 | 77 20 69 74 20 62 72 65 | | w it bre
+0x0268 | 61 6B 73 20 75 70 2E | | aks up.
+0x026F | 00 | char | 0x00 (0) | string terminator
padding:
+0x0270 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Bar):
+0x0272 | 0A 00 | uint16_t | 0x000A (10) | size of this vtable
+0x0274 | 16 00 | uint16_t | 0x0016 (22) | size of referring table
+0x0276 | 0C 00 | VOffset16 | 0x000C (12) | offset to field `a` (id: 0)
+0x0278 | 04 00 | VOffset16 | 0x0004 (4) | offset to field `b` (id: 1)
+0x027A | 08 00 | VOffset16 | 0x0008 (8) | offset to field `c` (id: 2)
table (AnnotatedBinary.Bar):
+0x027C | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x0272 | offset to vtable
+0x0280 | 65 20 71 49 | float | 0x49712065 (987654.312500) | table field `b` (Float)
+0x0284 | 14 00 00 00 | UOffset32 | 0x00000014 (20) Loc: +0x0298 | offset to field `c` (table)
+0x0288 | C9 76 BE 9F 0C 24 FE 40 | double | 0x40FE240C9FBE76C9 (123456.789000) | table field `a` (Double)
+0x0290 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Baz):
+0x0292 | 06 00 | uint16_t | 0x0006 (6) | size of this vtable
+0x0294 | 08 00 | uint16_t | 0x0008 (8) | size of referring table
+0x0296 | 07 00 | VOffset16 | 0x0007 (7) | offset to field `meal` (id: 0)
table (AnnotatedBinary.Baz):
+0x0298 | 06 00 00 00 | SOffset32 | 0x00000006 (6) Loc: +0x0292 | offset to vtable
+0x029C | 00 00 00 | uint8_t[3] | ... | padding
+0x029F | 01 | uint8_t | 0x01 (1) | table field `meal` (Byte)

View File

@@ -0,0 +1,297 @@
// Annotated Flatbuffer Binary
//
// Schema file: annotated_binary.fbs
// Binary file: tests/invalid_vtable_ref_table_size_short.bin
header:
+0x0000 | 44 00 00 00 | UOffset32 | 0x00000044 (68) Loc: +0x0044 | offset to root table `AnnotatedBinary.Foo`
+0x0004 | 41 4E 4E 4F | char[4] | ANNO | File Identifier
padding:
+0x0008 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Foo):
+0x000A | 3A 00 | uint16_t | 0x003A (58) | size of this vtable
+0x000C | 01 00 | uint16_t | 0x0001 (1) | ERROR: size of referring table. Size of table is smaller than the minimum 4 bytes
+0x000E | 0C 00 | VOffset16 | 0x000C (12) | offset to field `counter` (id: 0)
+0x0010 | 07 00 | VOffset16 | 0x0007 (7) | offset to field `healthy` (id: 1)
+0x0012 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `level` (id: 2) <defaults to 99> (Long)
+0x0014 | 08 00 | VOffset16 | 0x0008 (8) | offset to field `meal` (id: 3)
+0x0016 | 10 00 | VOffset16 | 0x0010 (16) | offset to field `bar` (id: 4)
+0x0018 | 14 00 | VOffset16 | 0x0014 (20) | offset to field `home` (id: 5)
+0x001A | 30 00 | VOffset16 | 0x0030 (48) | offset to field `name` (id: 6)
+0x001C | 34 00 | VOffset16 | 0x0034 (52) | offset to field `bars` (id: 7)
+0x001E | 09 00 | VOffset16 | 0x0009 (9) | offset to field `bar_baz_type` (id: 8)
+0x0020 | 38 00 | VOffset16 | 0x0038 (56) | offset to field `bar_baz` (id: 9)
+0x0022 | 3C 00 | VOffset16 | 0x003C (60) | offset to field `accounts` (id: 10)
+0x0024 | 40 00 | VOffset16 | 0x0040 (64) | offset to field `bob` (id: 11)
+0x0026 | 44 00 | VOffset16 | 0x0044 (68) | offset to field `alice` (id: 12)
+0x0028 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `maybe_i32` (id: 13) <defaults to 0> (Int)
+0x002A | 00 00 | VOffset16 | 0x0000 (0) | offset to field `default_i32` (id: 14) <defaults to 42> (Int)
+0x002C | 48 00 | VOffset16 | 0x0048 (72) | offset to field `just_i32` (id: 15)
+0x002E | 4C 00 | VOffset16 | 0x004C (76) | offset to field `names` (id: 16)
+0x0030 | 50 00 | VOffset16 | 0x0050 (80) | offset to field `points_of_interest` (id: 17)
+0x0032 | 54 00 | VOffset16 | 0x0054 (84) | offset to field `foobars_type` (id: 18)
+0x0034 | 58 00 | VOffset16 | 0x0058 (88) | offset to field `foobars` (id: 19)
+0x0036 | 0A 00 | VOffset16 | 0x000A (10) | offset to field `measurement_type` (id: 20)
+0x0038 | 5C 00 | VOffset16 | 0x005C (92) | offset to field `measurement` (id: 21)
+0x003A | 0B 00 | VOffset16 | 0x000B (11) | offset to field `anything_type` (id: 22)
+0x003C | 60 00 | VOffset16 | 0x0060 (96) | offset to field `anything` (id: 23)
+0x003E | 00 00 | VOffset16 | 0x0000 (0) | offset to field `temperature` (id: 24) <defaults to 98.600000> (Float)
+0x0040 | 00 00 | VOffset16 | 0x0000 (0) | offset to field `teetotaler` (id: 25) <null> (Obj)
+0x0042 | 64 00 | VOffset16 | 0x0064 (100) | offset to field `charlie` (id: 26)
root_table (AnnotatedBinary.Foo):
+0x0044 | 3A 00 00 00 | SOffset32 | 0x0000003A (58) Loc: +0x000A | offset to vtable
+0x0048 | 00 00 00 | uint8_t[3] | ... | padding
+0x004B | 01 | uint8_t | 0x01 (1) | table field `healthy` (Bool)
+0x004C | 02 | uint8_t | 0x02 (2) | table field `meal` (Byte)
+0x004D | 02 | UType8 | 0x02 (2) | table field `bar_baz_type` (UType)
+0x004E | 01 | UType8 | 0x01 (1) | table field `measurement_type` (UType)
+0x004F | 01 | UType8 | 0x01 (1) | table field `anything_type` (UType)
+0x0050 | D2 04 00 00 | uint32_t | 0x000004D2 (1234) | table field `counter` (Int)
+0x0054 | 28 02 00 00 | UOffset32 | 0x00000228 (552) Loc: +0x027C | offset to field `bar` (table)
+0x0058 | 01 00 00 00 | uint32_t | 0x00000001 (1) | struct field `AnnotatedBinary.Building.floors` (Int)
+0x005C | 02 00 00 00 | uint32_t | 0x00000002 (2) | struct field `AnnotatedBinary.Building.doors` (Int)
+0x0060 | 0C 00 00 00 | uint32_t | 0x0000000C (12) | struct field `AnnotatedBinary.Building.windows` (Int)
+0x0064 | 0A 00 00 00 | uint32_t | 0x0000000A (10) | array field `AnnotatedBinary.Dimension.values[0]` (Int)
+0x0068 | 0C 00 00 00 | uint32_t | 0x0000000C (12) | array field `AnnotatedBinary.Dimension.values[1]` (Int)
+0x006C | 14 00 00 00 | uint32_t | 0x00000014 (20) | array field `AnnotatedBinary.Dimension.values[2]` (Int)
+0x0070 | 01 | uint8_t | 0x01 (1) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
+0x0071 | 02 | uint8_t | 0x02 (2) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
+0x0072 | 03 | uint8_t | 0x03 (3) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
+0x0073 | 00 | uint8_t[1] | . | padding
+0x0074 | C8 01 00 00 | UOffset32 | 0x000001C8 (456) Loc: +0x023C | offset to field `name` (string)
+0x0078 | 5C 01 00 00 | UOffset32 | 0x0000015C (348) Loc: +0x01D4 | offset to field `bars` (vector)
+0x007C | 50 01 00 00 | UOffset32 | 0x00000150 (336) Loc: +0x01CC | offset to field `bar_baz` (union of type `Baz`)
+0x0080 | 34 01 00 00 | UOffset32 | 0x00000134 (308) Loc: +0x01B4 | offset to field `accounts` (vector)
+0x0084 | 24 01 00 00 | UOffset32 | 0x00000124 (292) Loc: +0x01A8 | offset to field `bob` (string)
+0x0088 | 14 01 00 00 | UOffset32 | 0x00000114 (276) Loc: +0x019C | offset to field `alice` (string)
+0x008C | 0D 00 00 00 | uint32_t | 0x0000000D (13) | table field `just_i32` (Int)
+0x0090 | DC 00 00 00 | UOffset32 | 0x000000DC (220) Loc: +0x016C | offset to field `names` (vector)
+0x0094 | A0 00 00 00 | UOffset32 | 0x000000A0 (160) Loc: +0x0134 | offset to field `points_of_interest` (vector)
+0x0098 | 94 00 00 00 | UOffset32 | 0x00000094 (148) Loc: +0x012C | offset to field `foobars_type` (vector)
+0x009C | 38 00 00 00 | UOffset32 | 0x00000038 (56) Loc: +0x00D4 | offset to field `foobars` (vector)
+0x00A0 | 33 00 00 00 | UOffset32 | 0x00000033 (51) Loc: +0x00D3 | offset to field `measurement` (union of type `Tolerance`)
+0x00A4 | 1C 00 00 00 | UOffset32 | 0x0000001C (28) Loc: +0x00C0 | offset to field `anything` (union of type `Bar`)
+0x00A8 | 04 00 00 00 | UOffset32 | 0x00000004 (4) Loc: +0x00AC | offset to field `charlie` (string)
string (AnnotatedBinary.Foo.charlie):
+0x00AC | 05 00 00 00 | uint32_t | 0x00000005 (5) | length of string
+0x00B0 | 61 6C 69 63 65 | char[5] | alice
+0x00B5 | 00 | char | 0x00 (0) | string terminator
padding:
+0x00B6 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Bar):
+0x00B8 | 08 00 | uint16_t | 0x0008 (8) | size of this vtable
+0x00BA | 13 00 | uint16_t | 0x0013 (19) | size of referring table
+0x00BC | 08 00 | VOffset16 | 0x0008 (8) | offset to field `a` (id: 0)
+0x00BE | 04 00 | VOffset16 | 0x0004 (4) | offset to field `b` (id: 1)
table (AnnotatedBinary.Bar):
+0x00C0 | 08 00 00 00 | SOffset32 | 0x00000008 (8) Loc: +0x00B8 | offset to vtable
+0x00C4 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float)
+0x00C8 | 00 00 00 00 00 10 74 40 | double | 0x4074100000000000 (321.000000) | table field `a` (Double)
+0x00D0 | 00 00 00 | uint8_t[3] | ... | padding
union (AnnotatedBinary.Tolerance.measurement):
+0x00D3 | 05 | uint8_t | 0x05 (5) | struct field `AnnotatedBinary.Tolerance.width` (UByte)
vector (AnnotatedBinary.Foo.foobars):
+0x00D4 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x00D8 | 34 00 00 00 | UOffset32 | 0x00000034 (52) Loc: +0x010C | offset to union[0] (`Bar`)
+0x00DC | 2C 00 00 00 | UOffset32 | 0x0000002C (44) Loc: +0x0108 | offset to union[1] (`Baz`)
+0x00E0 | 04 00 00 00 | UOffset32 | 0x00000004 (4) Loc: +0x00E4 | offset to union[2] (`Bar`)
table (AnnotatedBinary.Bar):
+0x00E4 | D2 FE FF FF | SOffset32 | 0xFFFFFED2 (-302) Loc: +0x0212 | offset to vtable
+0x00E8 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float)
+0x00EC | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x00FC | offset to field `c` (table)
+0x00F0 | 00 00 00 00 00 D8 8E 40 | double | 0x408ED80000000000 (987.000000) | table field `a` (Double)
+0x00F8 | 00 00 00 00 | uint8_t[4] | .... | padding
table (AnnotatedBinary.Baz):
+0x00FC | 6A FE FF FF | SOffset32 | 0xFFFFFE6A (-406) Loc: +0x0292 | offset to vtable
+0x0100 | 00 00 00 | uint8_t[3] | ... | padding
+0x0103 | 03 | uint8_t | 0x03 (3) | table field `meal` (Byte)
vtable (AnnotatedBinary.Baz):
+0x0104 | 04 00 | uint16_t | 0x0004 (4) | size of this vtable
+0x0106 | 04 00 | uint16_t | 0x0004 (4) | size of referring table
table (AnnotatedBinary.Baz):
+0x0108 | 04 00 00 00 | SOffset32 | 0x00000004 (4) Loc: +0x0104 | offset to vtable
table (AnnotatedBinary.Bar):
+0x010C | FA FE FF FF | SOffset32 | 0xFFFFFEFA (-262) Loc: +0x0212 | offset to vtable
+0x0110 | 00 00 E4 43 | float | 0x43E40000 (456.000000) | table field `b` (Float)
+0x0114 | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x0124 | offset to field `c` (table)
+0x0118 | 00 00 00 00 00 C0 5E 40 | double | 0x405EC00000000000 (123.000000) | table field `a` (Double)
+0x0120 | 00 00 00 00 | uint8_t[4] | .... | padding
table (AnnotatedBinary.Baz):
+0x0124 | 92 FE FF FF | SOffset32 | 0xFFFFFE92 (-366) Loc: +0x0292 | offset to vtable
+0x0128 | 00 00 00 | uint8_t[3] | ... | padding
+0x012B | 01 | uint8_t | 0x01 (1) | table field `meal` (Byte)
vector (AnnotatedBinary.Foo.foobars_type):
+0x012C | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x0130 | 01 | UType8 | 0x01 (1) | value[0]
+0x0131 | 02 | UType8 | 0x02 (2) | value[1]
+0x0132 | 01 | UType8 | 0x01 (1) | value[2]
vector (AnnotatedBinary.Foo.points_of_interest):
+0x0134 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x0138 | 33 33 33 33 33 A3 45 40 | double | 0x4045A33333333333 (43.275000) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0140 | 7E 57 04 FF 5B 87 53 C0 | double | 0xC053875BFF04577E (-78.114990) | struct field `AnnotatedBinary.Location.longitude` (Double)
+0x0148 | 8D F0 F6 20 04 B6 42 40 | double | 0x4042B60420F6F08D (37.422001) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0150 | 9F 77 63 41 61 85 5E C0 | double | 0xC05E85614163779F (-122.084061) | struct field `AnnotatedBinary.Location.longitude` (Double)
+0x0158 | 8F 35 23 83 DC 35 4B C0 | double | 0xC04B35DC8323358F (-54.420792) | struct field `AnnotatedBinary.Location.latitude` (Double)
+0x0160 | F6 97 DD 93 87 C5 0A 40 | double | 0x400AC58793DD97F6 (3.346450) | struct field `AnnotatedBinary.Location.longitude` (Double)
padding:
+0x0168 | 00 00 00 00 | uint8_t[4] | .... | padding
vector (AnnotatedBinary.Foo.names):
+0x016C | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of vector (# items)
+0x0170 | 20 00 00 00 | UOffset32 | 0x00000020 (32) Loc: +0x0190 | offset to string[0]
+0x0174 | 14 00 00 00 | UOffset32 | 0x00000014 (20) Loc: +0x0188 | offset to string[1]
+0x0178 | 04 00 00 00 | UOffset32 | 0x00000004 (4) Loc: +0x017C | offset to string[2]
string (AnnotatedBinary.Foo.names):
+0x017C | 07 00 00 00 | uint32_t | 0x00000007 (7) | length of string
+0x0180 | 63 68 61 72 6C 69 65 | char[7] | charlie
+0x0187 | 00 | char | 0x00 (0) | string terminator
string (AnnotatedBinary.Foo.names):
+0x0188 | 03 00 00 00 | uint32_t | 0x00000003 (3) | length of string
+0x018C | 62 6F 62 | char[3] | bob
+0x018F | 00 | char | 0x00 (0) | string terminator
string (AnnotatedBinary.Foo.names):
+0x0190 | 05 00 00 00 | uint32_t | 0x00000005 (5) | length of string
+0x0194 | 61 6C 69 63 65 | char[5] | alice
+0x0199 | 00 | char | 0x00 (0) | string terminator
padding:
+0x019A | 00 00 | uint8_t[2] | .. | padding
string (AnnotatedBinary.Foo.alice):
+0x019C | 07 00 00 00 | uint32_t | 0x00000007 (7) | length of string
+0x01A0 | 63 68 61 72 6C 69 65 | char[7] | charlie
+0x01A7 | 00 | char | 0x00 (0) | string terminator
string (AnnotatedBinary.Foo.bob):
+0x01A8 | 07 00 00 00 | uint32_t | 0x00000007 (7) | length of string
+0x01AC | 63 68 61 72 6C 69 65 | char[7] | charlie
+0x01B3 | 00 | char | 0x00 (0) | string terminator
vector (AnnotatedBinary.Foo.accounts):
+0x01B4 | 09 00 00 00 | uint32_t | 0x00000009 (9) | length of vector (# items)
+0x01B8 | 09 00 | uint16_t | 0x0009 (9) | value[0]
+0x01BA | 08 00 | uint16_t | 0x0008 (8) | value[1]
+0x01BC | 07 00 | uint16_t | 0x0007 (7) | value[2]
+0x01BE | 01 00 | uint16_t | 0x0001 (1) | value[3]
+0x01C0 | 02 00 | uint16_t | 0x0002 (2) | value[4]
+0x01C2 | 03 00 | uint16_t | 0x0003 (3) | value[5]
+0x01C4 | 06 00 | uint16_t | 0x0006 (6) | value[6]
+0x01C6 | 05 00 | uint16_t | 0x0005 (5) | value[7]
+0x01C8 | 04 00 | uint16_t | 0x0004 (4) | value[8]
padding:
+0x01CA | 00 00 | uint8_t[2] | .. | padding
table (AnnotatedBinary.Baz):
+0x01CC | 3A FF FF FF | SOffset32 | 0xFFFFFF3A (-198) Loc: +0x0292 | offset to vtable
+0x01D0 | 00 00 00 | uint8_t[3] | ... | padding
+0x01D3 | 03 | uint8_t | 0x03 (3) | table field `meal` (Byte)
vector (AnnotatedBinary.Foo.bars):
+0x01D4 | 02 00 00 00 | uint32_t | 0x00000002 (2) | length of vector (# items)
+0x01D8 | 44 00 00 00 | UOffset32 | 0x00000044 (68) Loc: +0x021C | offset to table[0]
+0x01DC | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x01EC | offset to table[1]
padding:
+0x01E0 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Bar):
+0x01E2 | 0A 00 | uint16_t | 0x000A (10) | size of this vtable
+0x01E4 | 1A 00 | uint16_t | 0x001A (26) | size of referring table
+0x01E6 | 0C 00 | VOffset16 | 0x000C (12) | offset to field `a` (id: 0)
+0x01E8 | 04 00 | VOffset16 | 0x0004 (4) | offset to field `b` (id: 1)
+0x01EA | 08 00 | VOffset16 | 0x0008 (8) | offset to field `c` (id: 2)
table (AnnotatedBinary.Bar):
+0x01EC | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x01E2 | offset to vtable
+0x01F0 | 00 80 23 44 | float | 0x44238000 (654.000000) | table field `b` (Float)
+0x01F4 | 18 00 00 00 | UOffset32 | 0x00000018 (24) Loc: +0x020C | offset to field `c` (table)
+0x01F8 | 00 00 00 00 00 D8 8E 40 | double | 0x408ED80000000000 (987.000000) | table field `a` (Double)
+0x0200 | 00 00 00 00 00 00 | uint8_t[6] | ...... | padding
vtable (AnnotatedBinary.Baz):
+0x0206 | 06 00 | uint16_t | 0x0006 (6) | size of this vtable
+0x0208 | 06 00 | uint16_t | 0x0006 (6) | size of referring table
+0x020A | 05 00 | VOffset16 | 0x0005 (5) | offset to field `meal` (id: 0)
table (AnnotatedBinary.Baz):
+0x020C | 06 00 00 00 | SOffset32 | 0x00000006 (6) Loc: +0x0206 | offset to vtable
+0x0210 | 00 | uint8_t[1] | . | padding
+0x0211 | 03 | uint8_t | 0x03 (3) | table field `meal` (Byte)
vtable (AnnotatedBinary.Bar):
+0x0212 | 0A 00 | uint16_t | 0x000A (10) | size of this vtable
+0x0214 | 18 00 | uint16_t | 0x0018 (24) | size of referring table
+0x0216 | 0C 00 | VOffset16 | 0x000C (12) | offset to field `a` (id: 0)
+0x0218 | 04 00 | VOffset16 | 0x0004 (4) | offset to field `b` (id: 1)
+0x021A | 08 00 | VOffset16 | 0x0008 (8) | offset to field `c` (id: 2)
table (AnnotatedBinary.Bar):
+0x021C | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x0212 | offset to vtable
+0x0220 | 00 00 E4 43 | float | 0x43E40000 (456.000000) | table field `b` (Float)
+0x0224 | 10 00 00 00 | UOffset32 | 0x00000010 (16) Loc: +0x0234 | offset to field `c` (table)
+0x0228 | 00 00 00 00 00 C0 5E 40 | double | 0x405EC00000000000 (123.000000) | table field `a` (Double)
+0x0230 | 00 00 00 00 | uint8_t[4] | .... | padding
table (AnnotatedBinary.Baz):
+0x0234 | A2 FF FF FF | SOffset32 | 0xFFFFFFA2 (-94) Loc: +0x0292 | offset to vtable
+0x0238 | 00 00 00 | uint8_t[3] | ... | padding
+0x023B | 01 | uint8_t | 0x01 (1) | table field `meal` (Byte)
string (AnnotatedBinary.Foo.name):
+0x023C | 2F 00 00 00 | uint32_t | 0x0000002F (47) | length of string
+0x0240 | 54 68 69 73 20 69 73 20 | char[47] | This is
+0x0248 | 61 20 6C 6F 6E 67 20 73 | | a long s
+0x0250 | 74 72 69 6E 67 20 74 6F | | tring to
+0x0258 | 20 73 68 6F 77 20 68 6F | | show ho
+0x0260 | 77 20 69 74 20 62 72 65 | | w it bre
+0x0268 | 61 6B 73 20 75 70 2E | | aks up.
+0x026F | 00 | char | 0x00 (0) | string terminator
padding:
+0x0270 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Bar):
+0x0272 | 0A 00 | uint16_t | 0x000A (10) | size of this vtable
+0x0274 | 16 00 | uint16_t | 0x0016 (22) | size of referring table
+0x0276 | 0C 00 | VOffset16 | 0x000C (12) | offset to field `a` (id: 0)
+0x0278 | 04 00 | VOffset16 | 0x0004 (4) | offset to field `b` (id: 1)
+0x027A | 08 00 | VOffset16 | 0x0008 (8) | offset to field `c` (id: 2)
table (AnnotatedBinary.Bar):
+0x027C | 0A 00 00 00 | SOffset32 | 0x0000000A (10) Loc: +0x0272 | offset to vtable
+0x0280 | 65 20 71 49 | float | 0x49712065 (987654.312500) | table field `b` (Float)
+0x0284 | 14 00 00 00 | UOffset32 | 0x00000014 (20) Loc: +0x0298 | offset to field `c` (table)
+0x0288 | C9 76 BE 9F 0C 24 FE 40 | double | 0x40FE240C9FBE76C9 (123456.789000) | table field `a` (Double)
+0x0290 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Baz):
+0x0292 | 06 00 | uint16_t | 0x0006 (6) | size of this vtable
+0x0294 | 08 00 | uint16_t | 0x0008 (8) | size of referring table
+0x0296 | 07 00 | VOffset16 | 0x0007 (7) | offset to field `meal` (id: 0)
table (AnnotatedBinary.Baz):
+0x0298 | 06 00 00 00 | SOffset32 | 0x00000006 (6) Loc: +0x0292 | offset to vtable
+0x029C | 00 00 00 | uint8_t[3] | ... | padding
+0x029F | 01 | uint8_t | 0x01 (1) | table field `meal` (Byte)

View File

@@ -0,0 +1,99 @@
// Annotated Flatbuffer Binary
//
// Schema file: annotated_binary.fbs
// Binary file: tests/invalid_vtable_size.bin
header:
+0x0000 | 44 00 00 00 | UOffset32 | 0x00000044 (68) Loc: +0x0044 | offset to root table `AnnotatedBinary.Foo`
+0x0004 | 41 4E 4E 4F | char[4] | ANNO | File Identifier
padding:
+0x0008 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Foo):
+0x000A | FF FF | uint16_t | 0xFFFF (65535) | ERROR: size of this vtable. Longer than the binary
unknown (no known references):
+0x000C | 68 00 0C 00 07 00 00 00 | ?uint8_t[660] | h....... | WARN: nothing refers to this section.
+0x0014 | 08 00 10 00 14 00 30 00 | | ......0.
+0x001C | 34 00 09 00 38 00 3C 00 | | 4...8.<.
+0x0024 | 40 00 44 00 00 00 00 00 | | @.D.....
+0x002C | 48 00 4C 00 50 00 54 00 | | H.L.P.T.
+0x0034 | 58 00 0A 00 5C 00 0B 00 | | X...\...
+0x003C | 60 00 00 00 00 00 64 00 | | `.....d.
+0x0044 | 3A 00 00 00 00 00 00 01 | | :.......
+0x004C | 02 02 01 01 D2 04 00 00 | | ........
+0x0054 | 28 02 00 00 01 00 00 00 | | (.......
+0x005C | 02 00 00 00 0C 00 00 00 | | ........
+0x0064 | 0A 00 00 00 0C 00 00 00 | | ........
+0x006C | 14 00 00 00 01 02 03 00 | | ........
+0x0074 | C8 01 00 00 5C 01 00 00 | | ....\...
+0x007C | 50 01 00 00 34 01 00 00 | | P...4...
+0x0084 | 24 01 00 00 14 01 00 00 | | $.......
+0x008C | 0D 00 00 00 DC 00 00 00 | | ........
+0x0094 | A0 00 00 00 94 00 00 00 | | ........
+0x009C | 38 00 00 00 33 00 00 00 | | 8...3...
+0x00A4 | 1C 00 00 00 04 00 00 00 | | ........
+0x00AC | 05 00 00 00 61 6C 69 63 | | ....alic
+0x00B4 | 65 00 00 00 08 00 13 00 | | e.......
+0x00BC | 08 00 04 00 08 00 00 00 | | ........
+0x00C4 | 00 80 23 44 00 00 00 00 | | ..#D....
+0x00CC | 00 10 74 40 00 00 00 05 | | ..t@....
+0x00D4 | 03 00 00 00 34 00 00 00 | | ....4...
+0x00DC | 2C 00 00 00 04 00 00 00 | | ,.......
+0x00E4 | D2 FE FF FF 00 80 23 44 | | ......#D
+0x00EC | 10 00 00 00 00 00 00 00 | | ........
+0x00F4 | 00 D8 8E 40 00 00 00 00 | | ...@....
+0x00FC | 6A FE FF FF 00 00 00 03 | | j.......
+0x0104 | 04 00 04 00 04 00 00 00 | | ........
+0x010C | FA FE FF FF 00 00 E4 43 | | .......C
+0x0114 | 10 00 00 00 00 00 00 00 | | ........
+0x011C | 00 C0 5E 40 00 00 00 00 | | ..^@....
+0x0124 | 92 FE FF FF 00 00 00 01 | | ........
+0x012C | 03 00 00 00 01 02 01 00 | | ........
+0x0134 | 03 00 00 00 33 33 33 33 | | ....3333
+0x013C | 33 A3 45 40 7E 57 04 FF | | 3.E@~W..
+0x0144 | 5B 87 53 C0 8D F0 F6 20 | | [.S....
+0x014C | 04 B6 42 40 9F 77 63 41 | | ..B@.wcA
+0x0154 | 61 85 5E C0 8F 35 23 83 | | a.^..5#.
+0x015C | DC 35 4B C0 F6 97 DD 93 | | .5K.....
+0x0164 | 87 C5 0A 40 00 00 00 00 | | ...@....
+0x016C | 03 00 00 00 20 00 00 00 | | .... ...
+0x0174 | 14 00 00 00 04 00 00 00 | | ........
+0x017C | 07 00 00 00 63 68 61 72 | | ....char
+0x0184 | 6C 69 65 00 03 00 00 00 | | lie.....
+0x018C | 62 6F 62 00 05 00 00 00 | | bob.....
+0x0194 | 61 6C 69 63 65 00 00 00 | | alice...
+0x019C | 07 00 00 00 63 68 61 72 | | ....char
+0x01A4 | 6C 69 65 00 07 00 00 00 | | lie.....
+0x01AC | 63 68 61 72 6C 69 65 00 | | charlie.
+0x01B4 | 09 00 00 00 09 00 08 00 | | ........
+0x01BC | 07 00 01 00 02 00 03 00 | | ........
+0x01C4 | 06 00 05 00 04 00 00 00 | | ........
+0x01CC | 3A FF FF FF 00 00 00 03 | | :.......
+0x01D4 | 02 00 00 00 44 00 00 00 | | ....D...
+0x01DC | 10 00 00 00 00 00 0A 00 | | ........
+0x01E4 | 1A 00 0C 00 04 00 08 00 | | ........
+0x01EC | 0A 00 00 00 00 80 23 44 | | ......#D
+0x01F4 | 18 00 00 00 00 00 00 00 | | ........
+0x01FC | 00 D8 8E 40 00 00 00 00 | | ...@....
+0x0204 | 00 00 06 00 06 00 05 00 | | ........
+0x020C | 06 00 00 00 00 03 0A 00 | | ........
+0x0214 | 18 00 0C 00 04 00 08 00 | | ........
+0x021C | 0A 00 00 00 00 00 E4 43 | | .......C
+0x0224 | 10 00 00 00 00 00 00 00 | | ........
+0x022C | 00 C0 5E 40 00 00 00 00 | | ..^@....
+0x0234 | A2 FF FF FF 00 00 00 01 | | ........
+0x023C | 2F 00 00 00 54 68 69 73 | | /...This
+0x0244 | 20 69 73 20 61 20 6C 6F | | is a lo
+0x024C | 6E 67 20 73 74 72 69 6E | | ng strin
+0x0254 | 67 20 74 6F 20 73 68 6F | | g to sho
+0x025C | 77 20 68 6F 77 20 69 74 | | w how it
+0x0264 | 20 62 72 65 61 6B 73 20 | | breaks
+0x026C | 75 70 2E 00 00 00 0A 00 | | up......
+0x0274 | 16 00 0C 00 04 00 08 00 | | ........
+0x027C | 0A 00 00 00 65 20 71 49 | | ....e qI
+0x0284 | 14 00 00 00 C9 76 BE 9F | | .....v..
+0x028C | 0C 24 FE 40 00 00 06 00 | | .$.@....
+0x0294 | 08 00 07 00 06 00 00 00 | | ........
+0x029C | 00 00 00 01 | | ....

Binary file not shown.

View File

@@ -0,0 +1,99 @@
// Annotated Flatbuffer Binary
//
// Schema file: annotated_binary.fbs
// Binary file: tests/invalid_vtable_size_short.bin
header:
+0x0000 | 44 00 00 00 | UOffset32 | 0x00000044 (68) Loc: +0x0044 | offset to root table `AnnotatedBinary.Foo`
+0x0004 | 41 4E 4E 4F | char[4] | ANNO | File Identifier
padding:
+0x0008 | 00 00 | uint8_t[2] | .. | padding
vtable (AnnotatedBinary.Foo):
+0x000A | 01 00 | uint16_t | 0x0001 (1) | ERROR: size of this vtable. Shorter than the minimum 4 bytes
unknown (no known references):
+0x000C | 68 00 0C 00 07 00 00 00 | ?uint8_t[660] | h....... | WARN: nothing refers to this section.
+0x0014 | 08 00 10 00 14 00 30 00 | | ......0.
+0x001C | 34 00 09 00 38 00 3C 00 | | 4...8.<.
+0x0024 | 40 00 44 00 00 00 00 00 | | @.D.....
+0x002C | 48 00 4C 00 50 00 54 00 | | H.L.P.T.
+0x0034 | 58 00 0A 00 5C 00 0B 00 | | X...\...
+0x003C | 60 00 00 00 00 00 64 00 | | `.....d.
+0x0044 | 3A 00 00 00 00 00 00 01 | | :.......
+0x004C | 02 02 01 01 D2 04 00 00 | | ........
+0x0054 | 28 02 00 00 01 00 00 00 | | (.......
+0x005C | 02 00 00 00 0C 00 00 00 | | ........
+0x0064 | 0A 00 00 00 0C 00 00 00 | | ........
+0x006C | 14 00 00 00 01 02 03 00 | | ........
+0x0074 | C8 01 00 00 5C 01 00 00 | | ....\...
+0x007C | 50 01 00 00 34 01 00 00 | | P...4...
+0x0084 | 24 01 00 00 14 01 00 00 | | $.......
+0x008C | 0D 00 00 00 DC 00 00 00 | | ........
+0x0094 | A0 00 00 00 94 00 00 00 | | ........
+0x009C | 38 00 00 00 33 00 00 00 | | 8...3...
+0x00A4 | 1C 00 00 00 04 00 00 00 | | ........
+0x00AC | 05 00 00 00 61 6C 69 63 | | ....alic
+0x00B4 | 65 00 00 00 08 00 13 00 | | e.......
+0x00BC | 08 00 04 00 08 00 00 00 | | ........
+0x00C4 | 00 80 23 44 00 00 00 00 | | ..#D....
+0x00CC | 00 10 74 40 00 00 00 05 | | ..t@....
+0x00D4 | 03 00 00 00 34 00 00 00 | | ....4...
+0x00DC | 2C 00 00 00 04 00 00 00 | | ,.......
+0x00E4 | D2 FE FF FF 00 80 23 44 | | ......#D
+0x00EC | 10 00 00 00 00 00 00 00 | | ........
+0x00F4 | 00 D8 8E 40 00 00 00 00 | | ...@....
+0x00FC | 6A FE FF FF 00 00 00 03 | | j.......
+0x0104 | 04 00 04 00 04 00 00 00 | | ........
+0x010C | FA FE FF FF 00 00 E4 43 | | .......C
+0x0114 | 10 00 00 00 00 00 00 00 | | ........
+0x011C | 00 C0 5E 40 00 00 00 00 | | ..^@....
+0x0124 | 92 FE FF FF 00 00 00 01 | | ........
+0x012C | 03 00 00 00 01 02 01 00 | | ........
+0x0134 | 03 00 00 00 33 33 33 33 | | ....3333
+0x013C | 33 A3 45 40 7E 57 04 FF | | 3.E@~W..
+0x0144 | 5B 87 53 C0 8D F0 F6 20 | | [.S....
+0x014C | 04 B6 42 40 9F 77 63 41 | | ..B@.wcA
+0x0154 | 61 85 5E C0 8F 35 23 83 | | a.^..5#.
+0x015C | DC 35 4B C0 F6 97 DD 93 | | .5K.....
+0x0164 | 87 C5 0A 40 00 00 00 00 | | ...@....
+0x016C | 03 00 00 00 20 00 00 00 | | .... ...
+0x0174 | 14 00 00 00 04 00 00 00 | | ........
+0x017C | 07 00 00 00 63 68 61 72 | | ....char
+0x0184 | 6C 69 65 00 03 00 00 00 | | lie.....
+0x018C | 62 6F 62 00 05 00 00 00 | | bob.....
+0x0194 | 61 6C 69 63 65 00 00 00 | | alice...
+0x019C | 07 00 00 00 63 68 61 72 | | ....char
+0x01A4 | 6C 69 65 00 07 00 00 00 | | lie.....
+0x01AC | 63 68 61 72 6C 69 65 00 | | charlie.
+0x01B4 | 09 00 00 00 09 00 08 00 | | ........
+0x01BC | 07 00 01 00 02 00 03 00 | | ........
+0x01C4 | 06 00 05 00 04 00 00 00 | | ........
+0x01CC | 3A FF FF FF 00 00 00 03 | | :.......
+0x01D4 | 02 00 00 00 44 00 00 00 | | ....D...
+0x01DC | 10 00 00 00 00 00 0A 00 | | ........
+0x01E4 | 1A 00 0C 00 04 00 08 00 | | ........
+0x01EC | 0A 00 00 00 00 80 23 44 | | ......#D
+0x01F4 | 18 00 00 00 00 00 00 00 | | ........
+0x01FC | 00 D8 8E 40 00 00 00 00 | | ...@....
+0x0204 | 00 00 06 00 06 00 05 00 | | ........
+0x020C | 06 00 00 00 00 03 0A 00 | | ........
+0x0214 | 18 00 0C 00 04 00 08 00 | | ........
+0x021C | 0A 00 00 00 00 00 E4 43 | | .......C
+0x0224 | 10 00 00 00 00 00 00 00 | | ........
+0x022C | 00 C0 5E 40 00 00 00 00 | | ..^@....
+0x0234 | A2 FF FF FF 00 00 00 01 | | ........
+0x023C | 2F 00 00 00 54 68 69 73 | | /...This
+0x0244 | 20 69 73 20 61 20 6C 6F | | is a lo
+0x024C | 6E 67 20 73 74 72 69 6E | | ng strin
+0x0254 | 67 20 74 6F 20 73 68 6F | | g to sho
+0x025C | 77 20 68 6F 77 20 69 74 | | w how it
+0x0264 | 20 62 72 65 61 6B 73 20 | | breaks
+0x026C | 75 70 2E 00 00 00 0A 00 | | up......
+0x0274 | 16 00 0C 00 04 00 08 00 | | ........
+0x027C | 0A 00 00 00 65 20 71 49 | | ....e qI
+0x0284 | 14 00 00 00 C9 76 BE 9F | | .....v..
+0x028C | 0C 24 FE 40 00 00 06 00 | | .$.@....
+0x0294 | 08 00 07 00 06 00 00 00 | | ........
+0x029C | 00 00 00 01 | | ....