Files
tinygltf/attic/tests/fuzzer
Syoyo Fujita 5aa461e477 Deprecate legacy v1/v2/v3 C++ API; make v3 C the mainline
Move tiny_gltf.h/.cc, tinygltf_json.h, json.hpp, stb_image*, loader_example.cc,
examples/, wasm/, experimental/, legacy tests and fuzzers under attic/.

TinyGLTF v3 C (tiny_gltf_v3.h/.c + tinygltf_json_c.h) is now the mainline:
- CMakeLists.txt: v3 C tests only, installs only v3 files
- tests/Makefile and Makefile: build/run the v3 C testers
- test_runner.py: verifies v3 C tester output only (no v1 ground truth)
- CI workflows: build and test v3 C only (GCC/Clang/MSVC/Meson/sanitizers)
- README: v3 C quick start, testing, licenses; legacy moved to attic/
2026-07-31 21:42:31 +09:00
..

Fuzzing test

Do fuzzing test for TinyGLTF API.

Supported API

  • LoadASCIIFromString
  • LoadBinaryFromMemory

Custom JSON backend (tinygltf_json.h)

  • LoadASCIIFromString
  • LoadBinaryFromMemory

Requirements

  • meson
  • clang with fuzzer support(-fsanitize=fuzzer. at least clang 8.0 should work)

Setup

Ubuntu 18.04

$ sudo apt install clang++-8
$ sudo apt install libfuzzer-8-dev

Optionally, if you didn't set update-alternatives you can set clang++ to point to clang++8

$ sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-8 10
$ sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-8 10

How to compile

$ CXX=clang++ CC=clang meson build
$ cd build
$ ninja

This builds two fuzzers:

  • fuzz_gltf default nlohmann/json backend
  • fuzz_gltf_customjson custom tinygltf_json.h backend (tests both ASCII and binary parsing paths)

How to run

Increase memory limit. e.g. -rss_limit_mb=50000

$ ./fuzz_gltf -rss_limit_mb=20000 -jobs 4
$ ./fuzz_gltf_customjson -rss_limit_mb=20000 -jobs 4