================ @@ -141,6 +158,42 @@ class RawPtrRefCallArgsChecker } } + void visitObjCMessageExpr(const ObjCMessageExpr *E, const Decl *D) const { + if (BR->getSourceManager().isInSystemHeader(E->getExprLoc())) + return; + + auto Selector = E->getSelector(); + if (auto *Receiver = E->getInstanceReceiver()->IgnoreParenCasts()) { + std::optional<bool> IsUnsafe = isUnsafePtr(E->getReceiverType()); + if (IsUnsafe && *IsUnsafe && !isPtrOriginSafe(Receiver)) { + if (auto *InnerMsg = dyn_cast<ObjCMessageExpr>(Receiver)) { + auto InnerSelector = InnerMsg->getSelector(); + if (InnerSelector.getNameForSlot(0) == "alloc" && + Selector.getNameForSlot(0).starts_with("init")) ---------------- t-rasmud wrote:
Should this also check for `getNameForSlot(0).starts_with("Init")`? https://github.com/llvm/llvm-project/pull/128586 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits