GSAF
GSAF is a path-sensitive bug-finding engine over Lotus’s guarded value-flow IR (GVFG).
Run it through the unified checker frontend:
lotus-check --engine=gsaf --checks=taint,use-after-free input.bc
lotus-check --engine=gsaf --checks=all --report-json=report.json input.bc
The engine implementation is in lib/Checker/GSAF. Library contracts reuse
Annotation/APISpec and Annotation/Taint. Build the GSAF library or
lotus-check executable. Run existing component tests with:
build/bin/tests/checker_tests --gtest_filter='GSAF*'
Organization
Public headers mirror the implementation directories:
API: vulnerability contracts, traces, registration and annotation model queries.Engine: four header/source pairs for the module checker, taint traversal, solver and summaries.Checkers: the two built-in checks (use after free and taint).Report: diagnostic rendering and trace scoring.Support: GSAF-specific options, queries, masks and object ordering.
Reusable analyses and reporting primitives live in their respective Lotus
subsystems. Framework diagnostic events and composition extend
DiagnosticEvent and CheckerDiagnostic; all report steps use BugReport.
LLVM/GVFG narrative rendering belongs to GSAF. See lib/Checker/GSAF/README.md for the dependency boundaries.
The per-function engine is Engine/FunctionAnalyzer. Checker trace containers,
reporting metadata, and the LLVM value-pair representation live in
Checker/Framework/ValueTrace.h and Checker/Framework/LLVMValueTrace.h.
Graph-specific traces and conversion live in IR/GVFG.