mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-30 06:40:01 +00:00
[fuzzer] Rename fuzzing dictionaries for oss-fuzz (#6318)
This commit makes the names of fuzzing dictionaries the same as the target binary names. Also it explicitly limits size of test inputs to prevent failures in `regex` and fuzzing time-outs.
This commit is contained in:
@@ -136,7 +136,7 @@ target_link_libraries(verifier_fuzzer PRIVATE flatbuffers_fuzzed)
|
|||||||
add_executable(monster_fuzzer flatbuffers_monster_fuzzer.cc)
|
add_executable(monster_fuzzer flatbuffers_monster_fuzzer.cc)
|
||||||
target_link_libraries(monster_fuzzer PRIVATE flatbuffers_fuzzed)
|
target_link_libraries(monster_fuzzer PRIVATE flatbuffers_fuzzed)
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
TARGET monster_fuzzer POST_BUILD
|
TARGET monster_fuzzer PRE_BUILD
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy
|
COMMAND ${CMAKE_COMMAND} -E copy
|
||||||
${CMAKE_SOURCE_DIR}/../monster_test.bfbs
|
${CMAKE_SOURCE_DIR}/../monster_test.bfbs
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/monster_test.bfbs)
|
${CMAKE_CURRENT_BINARY_DIR}/monster_test.bfbs)
|
||||||
|
|||||||
@@ -26,6 +26,9 @@
|
|||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
|
static constexpr size_t kMinInputLength = 1;
|
||||||
|
static constexpr size_t kMaxInputLength = 99000;
|
||||||
|
|
||||||
static constexpr uint8_t flags_strict_json = 0x80;
|
static constexpr uint8_t flags_strict_json = 0x80;
|
||||||
static constexpr uint8_t flags_skip_unexpected_fields_in_json = 0x40;
|
static constexpr uint8_t flags_skip_unexpected_fields_in_json = 0x40;
|
||||||
static constexpr uint8_t flags_allow_non_utf8 = 0x20;
|
static constexpr uint8_t flags_allow_non_utf8 = 0x20;
|
||||||
@@ -83,7 +86,8 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
|
|||||||
|
|
||||||
const std::string original(reinterpret_cast<const char *>(data), size);
|
const std::string original(reinterpret_cast<const char *>(data), size);
|
||||||
auto input = std::string(original.c_str()); // until '\0'
|
auto input = std::string(original.c_str()); // until '\0'
|
||||||
if (input.empty()) return 0;
|
if (input.size() < kMinInputLength || input.size() > kMaxInputLength)
|
||||||
|
return 0;
|
||||||
|
|
||||||
flatbuffers::IDLOptions opts;
|
flatbuffers::IDLOptions opts;
|
||||||
opts.strict_json = (flags & flags_strict_json);
|
opts.strict_json = (flags & flags_strict_json);
|
||||||
|
|||||||
@@ -9,6 +9,9 @@
|
|||||||
#include "flatbuffers/idl.h"
|
#include "flatbuffers/idl.h"
|
||||||
#include "test_init.h"
|
#include "test_init.h"
|
||||||
|
|
||||||
|
static constexpr size_t kMinInputLength = 1;
|
||||||
|
static constexpr size_t kMaxInputLength = 33000;
|
||||||
|
|
||||||
static constexpr uint8_t flags_strict_json = 0x80;
|
static constexpr uint8_t flags_strict_json = 0x80;
|
||||||
static constexpr uint8_t flags_skip_unexpected_fields_in_json = 0x40;
|
static constexpr uint8_t flags_skip_unexpected_fields_in_json = 0x40;
|
||||||
static constexpr uint8_t flags_allow_non_utf8 = 0x20;
|
static constexpr uint8_t flags_allow_non_utf8 = 0x20;
|
||||||
@@ -26,7 +29,8 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
|
|||||||
|
|
||||||
const std::string original(reinterpret_cast<const char *>(data), size);
|
const std::string original(reinterpret_cast<const char *>(data), size);
|
||||||
auto input = std::string(original.c_str()); // until '\0'
|
auto input = std::string(original.c_str()); // until '\0'
|
||||||
if (input.empty()) return 0;
|
if (input.size() < kMinInputLength || input.size() > kMaxInputLength)
|
||||||
|
return 0;
|
||||||
|
|
||||||
flatbuffers::IDLOptions opts;
|
flatbuffers::IDLOptions opts;
|
||||||
opts.strict_json = (flags & flags_strict_json);
|
opts.strict_json = (flags & flags_strict_json);
|
||||||
|
|||||||
@@ -27,6 +27,9 @@
|
|||||||
#include "flatbuffers/idl.h"
|
#include "flatbuffers/idl.h"
|
||||||
#include "test_init.h"
|
#include "test_init.h"
|
||||||
|
|
||||||
|
static constexpr size_t kMinInputLength = 1;
|
||||||
|
static constexpr size_t kMaxInputLength = 3000;
|
||||||
|
|
||||||
static constexpr uint8_t flags_scalar_type = 0x0F; // type of scalar value
|
static constexpr uint8_t flags_scalar_type = 0x0F; // type of scalar value
|
||||||
static constexpr uint8_t flags_quotes_kind = 0x10; // quote " or '
|
static constexpr uint8_t flags_quotes_kind = 0x10; // quote " or '
|
||||||
// reserved for future: json {named} or [unnamed]
|
// reserved for future: json {named} or [unnamed]
|
||||||
@@ -241,7 +244,8 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
|
|||||||
// Guarantee 0-termination.
|
// Guarantee 0-termination.
|
||||||
const std::string original(reinterpret_cast<const char *>(data), size);
|
const std::string original(reinterpret_cast<const char *>(data), size);
|
||||||
auto input = std::string(original.c_str()); // until '\0'
|
auto input = std::string(original.c_str()); // until '\0'
|
||||||
if (input.empty()) return 0;
|
if (input.size() < kMinInputLength || input.size() > kMaxInputLength)
|
||||||
|
return 0;
|
||||||
|
|
||||||
// Break comments in json to avoid complexity with regex matcher.
|
// Break comments in json to avoid complexity with regex matcher.
|
||||||
// The string " 12345 /* text */" will be accepted if insert it to string
|
// The string " 12345 /* text */" will be accepted if insert it to string
|
||||||
|
|||||||
@@ -10,6 +10,16 @@
|
|||||||
"0x"
|
"0x"
|
||||||
"-0x"
|
"-0x"
|
||||||
"p"
|
"p"
|
||||||
|
"0"
|
||||||
|
"1"
|
||||||
|
"2"
|
||||||
|
"3"
|
||||||
|
"4"
|
||||||
|
"5"
|
||||||
|
"6"
|
||||||
|
"7"
|
||||||
|
"8"
|
||||||
|
"9"
|
||||||
"a"
|
"a"
|
||||||
"b"
|
"b"
|
||||||
"c"
|
"c"
|
||||||
Reference in New Issue
Block a user