mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-22 00:28:27 +00:00
Verifier for FlexBuffers (#6977)
* Verifier for FlexBuffers * Verifier improvements & fuzzer
This commit is contained in:
committed by
GitHub
parent
705f27f6ee
commit
e367ca32ad
@@ -53,7 +53,7 @@ target_compile_options(
|
||||
fuzzer_config
|
||||
INTERFACE
|
||||
$<$<NOT:$<BOOL:${OSS_FUZZ}>>:
|
||||
-fsanitize-coverage=edge,trace-cmp
|
||||
-fsanitize-coverage=trace-cmp
|
||||
>
|
||||
$<$<BOOL:${USE_ASAN}>:
|
||||
-fsanitize=fuzzer,undefined,address
|
||||
@@ -146,6 +146,9 @@ target_link_libraries(parser_fuzzer PRIVATE flatbuffers_fuzzed)
|
||||
add_executable(verifier_fuzzer flatbuffers_verifier_fuzzer.cc)
|
||||
target_link_libraries(verifier_fuzzer PRIVATE flatbuffers_fuzzed)
|
||||
|
||||
add_executable(flexverifier_fuzzer flexbuffers_verifier_fuzzer.cc)
|
||||
target_link_libraries(flexverifier_fuzzer PRIVATE flatbuffers_fuzzed)
|
||||
|
||||
add_executable(monster_fuzzer flatbuffers_monster_fuzzer.cc)
|
||||
target_link_libraries(monster_fuzzer PRIVATE flatbuffers_fuzzed)
|
||||
add_custom_command(
|
||||
|
||||
14
tests/fuzzer/flexbuffers_verifier_fuzzer.cc
Normal file
14
tests/fuzzer/flexbuffers_verifier_fuzzer.cc
Normal file
@@ -0,0 +1,14 @@
|
||||
// Copyright 2015 The Chromium Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
#include <string>
|
||||
|
||||
#include "flatbuffers/flexbuffers.h"
|
||||
|
||||
extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
|
||||
std::vector<bool> reuse_tracker;
|
||||
flexbuffers::VerifyBuffer(data, size, &reuse_tracker);
|
||||
return 0;
|
||||
}
|
||||
@@ -10,10 +10,17 @@ For details about **libFuzzer** see: https://llvm.org/docs/LibFuzzer.html
|
||||
|
||||
To build and run these tests LLVM compiler (with clang frontend) and CMake should be installed before.
|
||||
|
||||
The fuzzer section include three tests:
|
||||
The fuzzer section include four tests:
|
||||
- `verifier_fuzzer` checks stability of deserialization engine for `Monster` schema;
|
||||
- `parser_fuzzer` checks stability of schema and json parser under various inputs;
|
||||
- `scalar_parser` focused on validation of the parser while parse numeric scalars in schema and/or json files;
|
||||
- `flexverifier_fuzzer` checks stability of deserialization engine for FlexBuffers only;
|
||||
|
||||
## Build
|
||||
```sh
|
||||
cd tests/fuzzer
|
||||
CC=clang CXX=clang++ cmake . -DCMAKE_BUILD_TYPE=Debug -DUSE_ASAN=ON
|
||||
```
|
||||
|
||||
## Run tests with a specific locale
|
||||
The grammar of the Flatbuffers library is based on printable-ASCII characters.
|
||||
|
||||
Reference in New Issue
Block a user