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

Reply via email to