[clang] [alpha.webkit.UnretainedCallArgsChecker] Add a checker for NS or CF type call arguments. (PR #128586)

Rashmi Mudduluru via cfe-commits cfe-commits at lists.llvm.org
Mon Mar 10 20:28:57 PDT 2025


================
@@ -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


More information about the cfe-commits mailing list