[PATCH] D77066: [analyzer] ApiModeling: Add buffer size arg constraint

Gabor Marton via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue May 26 11:59:51 PDT 2020


martong added inline comments.


================
Comment at: clang/lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp:249-250
+      // cannot apply the constraint. Actually, other checkers like
+      // CallAndMessage should catch this situation earlier, because we call a
+      // function with an uninitialized argument.
+      return nullptr;
----------------
Szelethus wrote:
> Would an unreachable be appropriate here then?
Yes, good point, just added that. CallAndMessage is already a dependency, so this must not fire.


================
Comment at: clang/lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp:993
+                                    RetType{IntTy}, EvalCallAsPure)
+                                .ArgConstraint(BufferSize(0, 1)));
   }
----------------
Szelethus wrote:
> In most places, where we refer to an argument number, we use `ArgNo`. Is there a reason we don't do that here? Can we enforce greater type safety?
Yeah, good point, I am going with this:
```
                BufferSize(/*Buffer=*/ArgNo(0), /*BufSize=*/ArgNo(1))));
```

About type safety: I was thinking about a strong typedef, but we don't actually have a convenient template for that in LLVM. And most of the time here in LLVM people just apply the /*Arg=*/ pythonish form.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D77066/new/

https://reviews.llvm.org/D77066





More information about the cfe-commits mailing list