mirror of
https://github.com/syoyo/tinygltf.git
synced 2026-08-15 15:50:01 +00:00
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/
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 backendfuzz_gltf_customjson– customtinygltf_json.hbackend (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