Temporarily disable out-of-bounds checking. The current checking logic will not work quite right with the changes I'm about to commit.
llvm-svn: 77779
This commit is contained in:
parent
b616260624
commit
eb01ba670e
|
@ -1241,6 +1241,9 @@ GRExprEngine::NodeTy* GRExprEngine::EvalLocation(Stmt* Ex, NodeTy* Pred,
|
|||
if (!StNotNull)
|
||||
return NULL;
|
||||
|
||||
// FIXME: Temporarily disable out-of-bounds checking until we make
|
||||
// the logic reflect recent changes to CastRegion and friends.
|
||||
#if 0
|
||||
// Check for out-of-bound array access.
|
||||
if (isa<loc::MemRegionVal>(LV)) {
|
||||
const MemRegion* R = cast<loc::MemRegionVal>(LV).getRegion();
|
||||
|
@ -1278,6 +1281,7 @@ GRExprEngine::NodeTy* GRExprEngine::EvalLocation(Stmt* Ex, NodeTy* Pred,
|
|||
StNotNull = StInBound;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
// Generate a new node indicating the checks succeed.
|
||||
return Builder->generateNode(Ex, StNotNull, Pred,
|
||||
|
@ -1316,7 +1320,8 @@ static bool EvalOSAtomicCompareAndSwap(ExplodedNodeSet<GRState>& Dst,
|
|||
return false;
|
||||
|
||||
Expr *theValueExpr = CE->getArg(2);
|
||||
const PointerType *theValueType = theValueExpr->getType()->getAs<PointerType>();
|
||||
const PointerType *theValueType =
|
||||
theValueExpr->getType()->getAs<PointerType>();
|
||||
|
||||
// theValueType not a pointer?
|
||||
if (!theValueType)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -verify %s
|
||||
// XFAIL
|
||||
|
||||
char f1() {
|
||||
char* s = "abcd";
|
||||
|
|
|
@ -13,7 +13,10 @@ void foo( void )
|
|||
struct load_wine *cmd = (void*) &wonky[1];
|
||||
cmd = cmd;
|
||||
char *p = (void*) &wonky[1];
|
||||
*p = 1;
|
||||
*p = 1; // no-warning
|
||||
kernel_tea_cheese_t *q = &wonky[1];
|
||||
kernel_tea_cheese_t r = *q; // expected-warning{{out-of-bound memory position}}
|
||||
// This test case tests both the RegionStore logic (doesn't crash) and
|
||||
// the out-of-bounds checking. We don't expect the warning for now since
|
||||
// out-of-bound checking is temporarily disabled.
|
||||
kernel_tea_cheese_t r = *q; // eventually-warning{{out-of-bound memory position}}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue