]> granicus.if.org Git - clang/commitdiff
[analyzer] Minor refactor to addTaint.
authorAnna Zaks <ganna@apple.com>
Wed, 14 Dec 2011 00:56:15 +0000 (00:56 +0000)
committerAnna Zaks <ganna@apple.com>
Wed, 14 Dec 2011 00:56:15 +0000 (00:56 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146535 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h
lib/StaticAnalyzer/Core/ProgramState.cpp

index 242b49e75f50390451f0ce7298d7710b675532d2..5391f1a5852af131070b862338f927374d7bc812 100644 (file)
@@ -297,6 +297,10 @@ public:
   const ProgramState* addTaint(SymbolRef S,
                                TaintTagType Kind = TaintTagGeneric) const;
 
+  /// Create a new state in which the region symbol is marked as tainted.
+  const ProgramState* addTaint(const MemRegion *R,
+                               TaintTagType Kind = TaintTagGeneric) const;
+
   /// Check if the statement is tainted in the current state.
   bool isTainted(const Stmt *S, TaintTagType Kind = TaintTagGeneric) const;
   bool isTainted(SVal V, TaintTagType Kind = TaintTagGeneric) const;
index af038c6f0f5e4c0976301ed1545599c34a386ccc..9ea8abd9521b6d3abaea5f7923a057eca39463ad 100644 (file)
@@ -658,13 +658,19 @@ const ProgramState* ProgramState::addTaint(const Stmt *S,
     return addTaint(Sym, Kind);
 
   const MemRegion *R = getSVal(S).getAsRegion();
-  if (const SymbolicRegion *SR = dyn_cast_or_null<SymbolicRegion>(R))
-    return addTaint(SR->getSymbol(), Kind);
+  addTaint(R, Kind);
 
   // Cannot add taint, so just return the state.
   return this;
 }
 
+const ProgramState* ProgramState::addTaint(const MemRegion *R,
+                                           TaintTagType Kind) const {
+  if (const SymbolicRegion *SR = dyn_cast_or_null<SymbolicRegion>(R))
+    return addTaint(SR->getSymbol(), Kind);
+  return this;
+}
+
 const ProgramState* ProgramState::addTaint(SymbolRef Sym,
                                            TaintTagType Kind) const {
   const ProgramState *NewState = set<TaintMap>(Sym, Kind);