[PATCH] Warning for Out of bound access of Array of Structures/Unions not reported
Karthik Bhat
blitz.opensource at gmail.com
Thu Sep 5 07:27:24 PDT 2013
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 <blitz.opensource at gmail.com>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;
> +}
> +
> +
> +
> +
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20130905/edaff71b/attachment.html>
More information about the cfe-commits
mailing list