From 1dbdbcc04c1c584112f20f7092e920c3b44eb53c Mon Sep 17 00:00:00 2001 From: Ted Kremenek Date: Thu, 29 Oct 2009 05:33:39 +0000 Subject: [PATCH] Fix accidental use of CheckSVal instead of CheckLocation, and add a small test case to show we handle dereferences of undefined values. llvm-svn: 85492 --- clang/lib/Analysis/GRExprEngineInternalChecks.cpp | 4 ++-- clang/test/Analysis/misc-ps.m | 6 ++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/clang/lib/Analysis/GRExprEngineInternalChecks.cpp b/clang/lib/Analysis/GRExprEngineInternalChecks.cpp index ca38b05df86f..526bc93e8532 100644 --- a/clang/lib/Analysis/GRExprEngineInternalChecks.cpp +++ b/clang/lib/Analysis/GRExprEngineInternalChecks.cpp @@ -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(); diff --git a/clang/test/Analysis/misc-ps.m b/clang/test/Analysis/misc-ps.m index fcc13a39a461..0d4592a9e308 100644 --- a/clang/test/Analysis/misc-ps.m +++ b/clang/test/Analysis/misc-ps.m @@ -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() {