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
This commit is contained in:
parent
98261735b4
commit
1dbdbcc04c
|
@ -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();
|
||||
|
|
|
@ -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() {
|
||||
|
|
Loading…
Reference in New Issue