[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