#include "clang/StaticAnalyzer/Checkers/Taint.h"
#include "clang/StaticAnalyzer/Core/BugReporter/BugReporter.h"
#include "clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h"
#include "clang/StaticAnalyzer/Core/PathSensitive/ProgramStateTrait.h"
#include <optional>
usingnamespaceclang;
usingnamespaceento;
usingnamespacetaint;
REGISTER_MAP_WITH_PROGRAMSTATE(…)
REGISTER_MAP_FACTORY_WITH_PROGRAMSTATE(…)
REGISTER_MAP_WITH_PROGRAMSTATE(…)
void taint::printTaint(ProgramStateRef State, raw_ostream &Out, const char *NL,
const char *Sep) { … }
void taint::dumpTaint(ProgramStateRef State) { … }
ProgramStateRef taint::addTaint(ProgramStateRef State, const Stmt *S,
const LocationContext *LCtx,
TaintTagType Kind) { … }
ProgramStateRef taint::addTaint(ProgramStateRef State, SVal V,
TaintTagType Kind) { … }
ProgramStateRef taint::addTaint(ProgramStateRef State, const MemRegion *R,
TaintTagType Kind) { … }
ProgramStateRef taint::addTaint(ProgramStateRef State, SymbolRef Sym,
TaintTagType Kind) { … }
ProgramStateRef taint::removeTaint(ProgramStateRef State, SVal V) { … }
ProgramStateRef taint::removeTaint(ProgramStateRef State, const MemRegion *R) { … }
ProgramStateRef taint::removeTaint(ProgramStateRef State, SymbolRef Sym) { … }
ProgramStateRef taint::addPartialTaint(ProgramStateRef State,
SymbolRef ParentSym,
const SubRegion *SubRegion,
TaintTagType Kind) { … }
bool taint::isTainted(ProgramStateRef State, const Stmt *S,
const LocationContext *LCtx, TaintTagType Kind) { … }
bool taint::isTainted(ProgramStateRef State, SVal V, TaintTagType Kind) { … }
bool taint::isTainted(ProgramStateRef State, const MemRegion *Reg,
TaintTagType K) { … }
bool taint::isTainted(ProgramStateRef State, SymbolRef Sym, TaintTagType Kind) { … }
std::vector<SymbolRef> taint::getTaintedSymbols(ProgramStateRef State,
const Stmt *S,
const LocationContext *LCtx,
TaintTagType Kind) { … }
std::vector<SymbolRef> taint::getTaintedSymbols(ProgramStateRef State, SVal V,
TaintTagType Kind) { … }
std::vector<SymbolRef> taint::getTaintedSymbols(ProgramStateRef State,
SymbolRef Sym,
TaintTagType Kind) { … }
std::vector<SymbolRef> taint::getTaintedSymbols(ProgramStateRef State,
const MemRegion *Reg,
TaintTagType Kind) { … }
std::vector<SymbolRef> taint::getTaintedSymbolsImpl(ProgramStateRef State,
const Stmt *S,
const LocationContext *LCtx,
TaintTagType Kind,
bool returnFirstOnly) { … }
std::vector<SymbolRef> taint::getTaintedSymbolsImpl(ProgramStateRef State,
SVal V, TaintTagType Kind,
bool returnFirstOnly) { … }
std::vector<SymbolRef> taint::getTaintedSymbolsImpl(ProgramStateRef State,
const MemRegion *Reg,
TaintTagType K,
bool returnFirstOnly) { … }
std::vector<SymbolRef> taint::getTaintedSymbolsImpl(ProgramStateRef State,
SymbolRef Sym,
TaintTagType Kind,
bool returnFirstOnly) { … }