diff --git a/lib/StaticAnalyzer/Core/ProgramState.cpp b/lib/StaticAnalyzer/Core/ProgramState.cpp index 3ce3db7313bf8d9fb6e01b3b55b87580810863a9..07f76c585f8b0a18300db0efc05c2692add92695 100644 --- a/lib/StaticAnalyzer/Core/ProgramState.cpp +++ b/lib/StaticAnalyzer/Core/ProgramState.cpp @@ -644,15 +644,13 @@ bool ProgramState::isTainted(const Stmt *S, TaintTagType Kind) const { } bool ProgramState::isTainted(SVal V, TaintTagType Kind) const { - const SymExpr* Sym = V.getAsSymbol(); - if (!Sym) - Sym = V.getAsSymbolicExpression(); - if (!Sym) - return false; - return isTainted(Sym, Kind); + return isTainted(V.getAsSymExpr(), Kind); } bool ProgramState::isTainted(const SymExpr* Sym, TaintTagType Kind) const { + if (!Sym) + return false; + // Check taint on derived symbols. if (const SymbolDerived *SD = dyn_cast<SymbolDerived>(Sym)) return isTainted(SD->getParentSymbol(), Kind);