]> granicus.if.org Git - clang/commitdiff
Fix accidental use of CheckSVal instead of CheckLocation, and add a
authorTed Kremenek <kremenek@apple.com>
Thu, 29 Oct 2009 05:33:39 +0000 (05:33 +0000)
committerTed Kremenek <kremenek@apple.com>
Thu, 29 Oct 2009 05:33:39 +0000 (05:33 +0000)
small test case to show we handle dereferences of undefined values.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85492 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Analysis/GRExprEngineInternalChecks.cpp
test/Analysis/misc-ps.m

index ca38b05df86f5b311989ab4df1b0973abac8a570..526bc93e853272053eb47303ae9853045906db7a 100644 (file)
@@ -763,7 +763,7 @@ class VISIBILITY_HIDDEN CheckUndefDeref : public Checker {
 public:
   CheckUndefDeref() : BT(0) {}
 
-  ExplodedNode *CheckSVal(const Stmt *S, ExplodedNode *Pred,
+  ExplodedNode *CheckLocation(const Stmt *S, ExplodedNode *Pred,
                           const GRState *state, SVal V, GRExprEngine &Eng);
 
   static void *getTag() {
@@ -772,7 +772,7 @@ public:
   }
 };
 
-ExplodedNode *CheckUndefDeref::CheckSVal(const Stmt *S, ExplodedNode *Pred,
+ExplodedNode *CheckUndefDeref::CheckLocation(const Stmt *S, ExplodedNode *Pred,
                                          const GRState *state, SVal V,
                                          GRExprEngine &Eng) {
   GRStmtNodeBuilder &Builder = Eng.getBuilder();
index fcc13a39a4610e09bf5db8611f4d7b91335219e5..0d4592a9e3085646628d6945702a9f53ea94a376 100644 (file)
@@ -154,6 +154,12 @@ void handle_sizeof_void(unsigned flag) {
   *p = 1; // no-warning
 }
 
+// check deference of undefined values
+void check_deref_undef(void) {
+  int *p;
+  *p = 0xDEADBEEF; // expected-warning{{Dereference of undefined pointer value}}
+}
+
 // PR 3422
 void pr3422_helper(char *p);
 void pr3422() {