All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Extracted
BaseGeneratorABC from 5 duplicated generator classes (12,924 → 4,767 lines) - Created
GeneratorStatedataclass replacing 13 mutable instance variables - Extracted
BaseFuzzerfrom duplicated Fuzzer/NatchFuzzer (1,602 → 891 lines) - Moved
ContextGeneratorandNatchGeneratorto separate modules FuzzDataProviderGeneratorreduced from 2,715 to 222 linesBlobStamperGeneratorreduced from 2,693 to 37 lines
- Custom exception hierarchy (
futag.exceptions: FutagError, InvalidPathError, etc.) - Python
loggingmodule integration (replaces print statements) GeneratorState.save()/restore_from()for clean recursive backtracking- GitHub Actions CI (python-tests.yml, syntax-check.yml)
- Fixed null-pointer dereference in FutagConsumerAnalyzer (cfg->size() before null check)
- Fixed memory leak in FutagConsumerAnalyzer (new int() instead of new int[])
- Fixed
param_listduplication bug in__save_old_values - Fixed 14+ file handle leaks (bare open() → with statements)
- Fixed
_build_ovearall_coveragetypo →_build_overall_coverage - Replaced bubble sort in
sort_callexprswithsorted()
- Created docs/architecture.md, docs/generators.md, docs/checkers.md, docs/python-api.md
- Created CONTRIBUTING.md
- Added comprehensive docstrings and return type hints to all methods
- Added GPL v3 license headers to all Python source files
- Translated template-script.py comments from Russian to English
- Added
MAX_CFG_BLOCKSandREPORT_FILENAME_RAND_LENconstants - Changed
SmallString<0>toSmallString<256> - Added Doxygen comments to all checker methods
- Synchronized base files with LLVM 18 variants
- Add support for Fuzzed Data Provider
- Optimize ConsumerBuilder
- Add example for context-generation https://github.com/thientc/Futag-tests/tree/main/json-c-contexts
- Support generation fuzz driver for Natch data: https://github.com/thientc/Futag-tests/tree/main/Natch
- Fix error in generator
- Add generation for pugi::char_t *&
- Add generation for anonymous function
- Fix error in Builder
- Support for context generation
- Fix error python in Builder
- Fix error python in Generator for wchar_t string
- Add is_simple for 4consummer_analysis_db
- Add CFG and DFC analysis
- Add Fuzzer extra params support
- Fix errors while compiling AFL++, return coverage parameters
- Fix Readme
- change LLVM_ENABLE_ZLIB to ON
- And generation for anonymous functions
- Reformat Python classes
- Fix included paths of compiling command
- Add support for C++, generate for constructors and for method of class, which has default constructors
- Tested on FreeImage and Pugixml
- Add support for AFLplusplus
- Add possibility of building LLVM with different version (12, 13, 14)
- Add analysis for classes, structs, unions...
- Add compilition database of building
- Add analysis of headers
- Add support for Makefile
- Generation for global function of C++ libraries
- Add testing repository: https://github.com/thientc/Futag-tests
- Add support for fuzz-introspector
- Migrate to llvm-14.0.6
- Fix bug in generator
- Add release package
- Fix document
- Fix bug in generator
- Add pre release package
- Fix document
- Fix bug in generator
- Fix for svace analysing
- add first version of fuzzer and result of Fuzzing for Svace
- Add multi-processing support for compiling
- TODO: Check analysis result befor generating fuzz-driver
- Add custom-llvm: download and build llvm, clang, compiler-rt
- Fix document
- Add modules preprocessor to Futag python-package
- Fix README of Futag python-package