Hi Jordan,Ted,Richard Any inputs on this patch? http://llvm-reviews.chandlerc.com/D1580
Thanks Karthik Bhat On Tue, Sep 3, 2013 at 7:40 PM, Karthik Bhat <[email protected]>wrote: > Hi jordan_rose, > > Hi All, > Out of bound access of array of structures/unions are not reported. Added > a patch to handle the same. > Please let me know if it is good to commit. > Thanks > Karthik Bhat > > http://llvm-reviews.chandlerc.com/D1580 > > Files: > lib/Sema/SemaChecking.cpp > test/SemaCXX/array-bounds.cpp > > Index: lib/Sema/SemaChecking.cpp > =================================================================== > --- lib/Sema/SemaChecking.cpp > +++ lib/Sema/SemaChecking.cpp > @@ -6373,6 +6373,12 @@ > CheckArrayAccess(rhs); > return; > } > + case Stmt::MemberExprClass: { > + const MemberExpr *memExpr = cast<MemberExpr>(expr); > + if (const Expr *base = memExpr->getBase()) > + CheckArrayAccess(base); > + return; > + } > default: > return; > } > Index: test/SemaCXX/array-bounds.cpp > =================================================================== > --- test/SemaCXX/array-bounds.cpp > +++ test/SemaCXX/array-bounds.cpp > @@ -253,3 +253,20 @@ > int a[128]; // expected-note {{array 'a' declared here}} > a[(unsigned char)'\xA1'] = 1; // expected-warning {{array index > 161 is past the end of the array}} > } > + > +typedef struct { > + int a; > +} structTest; > + > +void > +test_arraystructOverflow() { > + structTest data[2]; // expected-note 2 {{array 'data' declared here}} > + if (!data[1].a && !data[2].a) { // expected-warning {{array index 2 is > past the end of the array (which contains 2 elements)}} > + data[2].a = 1; // expected-warning {{array index 2 is past the end > of the array (which contains 2 elements)}} > + } > + return; > +} > + > + > + > + >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
