[PATCH] D147037: [Clang][ICE] Corrected invalid invalid parameter index on some attributes with invalid indices applied to varargs functions
Timm Bäder via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Mar 29 03:47:28 PDT 2023
tbaeder added inline comments.
================
Comment at: clang/lib/Sema/SemaDeclAttr.cpp:3764-3767
if (!checkFunctionOrMethodParameterIndex(S, D, AL, 1, IdxExpr, Idx))
return;
-
+ if (Idx.getASTIndex() >= getFunctionOrMethodNumParams(D))
+ return;
----------------
erichkeane wrote:
> aaron.ballman wrote:
> > Did you look into fixing this within `checkFunctionOrMethodParameterIndex()` instead? That way, all callers of the API get the correct behavior instead of having to find individual attributes to check the logic (I believe there are other attributes with the same underlying problem).
> I would also expect any such issue to diagnose. Also, isn't there an off-by-one error here in the case of variadic args?
`handleFormatAttr()` has:
```
if (Idx < 1 || Idx > NumArgs) {
S.Diag(AL.getLoc(), diag::err_attribute_argument_out_of_bounds)
<< AL << 2 << IdxExpr->getSourceRange();
return;
}
```
which is also what I'd expect to see here.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D147037/new/
https://reviews.llvm.org/D147037
More information about the cfe-commits
mailing list