[fuzzer] Adds code generation target. (#8795)

* adds code generation fuzzer target.

* add buffer verification

* add table verification in codegen fuzzer

---------

Co-authored-by: Björn Harrtell <bjornharrtell@users.noreply.github.com>
This commit is contained in:
coder7695
2025-11-27 16:52:28 +01:00
committed by GitHub
parent 84f4b83d3e
commit 2b107e20c5
13 changed files with 495 additions and 10 deletions

View File

@@ -120,9 +120,67 @@ set(FlatBuffers_Library_SRCS
${FLATBUFFERS_DIR}/tests/64bit/test_64bit_bfbs_generated.h
)
set(FlatBuffers_Compiler_SRCS
${FLATBUFFERS_DIR}/src/idl_gen_binary.cpp
${FLATBUFFERS_DIR}/src/idl_gen_text.cpp
${FLATBUFFERS_DIR}/src/idl_gen_cpp.cpp
${FLATBUFFERS_DIR}/src/idl_gen_csharp.cpp
${FLATBUFFERS_DIR}/src/idl_gen_dart.cpp
${FLATBUFFERS_DIR}/src/idl_gen_kotlin.cpp
${FLATBUFFERS_DIR}/src/idl_gen_kotlin_kmp.cpp
${FLATBUFFERS_DIR}/src/idl_gen_go.cpp
${FLATBUFFERS_DIR}/src/idl_gen_java.cpp
${FLATBUFFERS_DIR}/src/idl_gen_ts.cpp
${FLATBUFFERS_DIR}/src/idl_gen_php.cpp
${FLATBUFFERS_DIR}/src/idl_gen_python.cpp
${FLATBUFFERS_DIR}/src/idl_gen_lobster.cpp
${FLATBUFFERS_DIR}/src/idl_gen_rust.cpp
${FLATBUFFERS_DIR}/src/idl_gen_fbs.cpp
${FLATBUFFERS_DIR}/src/idl_gen_grpc.cpp
${FLATBUFFERS_DIR}/src/idl_gen_json_schema.cpp
${FLATBUFFERS_DIR}/src/idl_gen_swift.cpp
${FLATBUFFERS_DIR}/src/file_name_saving_file_manager.cpp
${FLATBUFFERS_DIR}/src/file_binary_writer.cpp
${FLATBUFFERS_DIR}/src/file_writer.cpp
${FLATBUFFERS_DIR}/src/idl_namer.h
${FLATBUFFERS_DIR}/src/namer.h
${FLATBUFFERS_DIR}/src/flatc.cpp
# ${FLATBUFFERS_DIR}/src/flatc_main.cpp
${FLATBUFFERS_DIR}/src/bfbs_gen.h
${FLATBUFFERS_DIR}/src/bfbs_gen_lua.h
${FLATBUFFERS_DIR}/src/bfbs_gen_nim.h
${FLATBUFFERS_DIR}/src/bfbs_namer.h
${FLATBUFFERS_DIR}/include/codegen/idl_namer.h
${FLATBUFFERS_DIR}/include/codegen/namer.h
${FLATBUFFERS_DIR}/include/codegen/python.h
${FLATBUFFERS_DIR}/include/codegen/python.cc
${FLATBUFFERS_DIR}/include/flatbuffers/code_generators.h
${FLATBUFFERS_DIR}/src/binary_annotator.h
${FLATBUFFERS_DIR}/src/binary_annotator.cpp
${FLATBUFFERS_DIR}/src/annotated_binary_text_gen.h
${FLATBUFFERS_DIR}/src/annotated_binary_text_gen.cpp
${FLATBUFFERS_DIR}/src/bfbs_gen_lua.cpp
${FLATBUFFERS_DIR}/src/bfbs_gen_nim.cpp
${FLATBUFFERS_DIR}/src/code_generators.cpp
${FLATBUFFERS_DIR}/grpc/src/compiler/schema_interface.h
${FLATBUFFERS_DIR}/grpc/src/compiler/cpp_generator.h
${FLATBUFFERS_DIR}/grpc/src/compiler/cpp_generator.cc
${FLATBUFFERS_DIR}/grpc/src/compiler/go_generator.h
${FLATBUFFERS_DIR}/grpc/src/compiler/go_generator.cc
${FLATBUFFERS_DIR}/grpc/src/compiler/java_generator.h
${FLATBUFFERS_DIR}/grpc/src/compiler/java_generator.cc
${FLATBUFFERS_DIR}/grpc/src/compiler/python_generator.h
${FLATBUFFERS_DIR}/grpc/src/compiler/python_generator.cc
${FLATBUFFERS_DIR}/grpc/src/compiler/swift_generator.h
${FLATBUFFERS_DIR}/grpc/src/compiler/swift_generator.cc
${FLATBUFFERS_DIR}/grpc/src/compiler/ts_generator.h
${FLATBUFFERS_DIR}/grpc/src/compiler/ts_generator.cc
)
include_directories(${FLATBUFFERS_DIR}/include)
include_directories(${FLATBUFFERS_DIR}/tests)
include_directories(${FLATBUFFERS_DIR}/src)
include_directories(${FLATBUFFERS_DIR}/grpc)
add_library(flatbuffers_fuzzed STATIC ${FlatBuffers_Library_SRCS})
# Use PUBLIC to force 'fuzzer_config' for all dependent targets
@@ -156,6 +214,11 @@ 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_executable(codegen_fuzzer flatbuffers_codegen_fuzzer.cc ${FlatBuffers_Compiler_SRCS})
target_link_libraries(codegen_fuzzer PRIVATE flatbuffers_fuzzed)
target_compile_definitions(codegen_fuzzer PRIVATE assert=fuzzer_assert_impl)
add_custom_command(
TARGET monster_fuzzer PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E copy