martong marked 2 inline comments as done.
martong added inline comments.

================
Comment at: 
clang/lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp:1735-1747
+      if (!addToFunctionSummaryMap(
+              "accept", Summary(ArgTypes{IntTy, *StructSockaddrPtrRestrictTy,
+                                         *Socklen_tPtrRestrictTy},
+                                RetType{IntTy}, NoEvalCall)
+                            .ArgConstraint(ArgumentCondition(
+                                0, WithinRange, Range(0, IntMax)))))
+        // Do not add constraints on sockaddr.
----------------
Szelethus wrote:
> martong wrote:
> > Szelethus wrote:
> > > This is quite a bit of code duplication -- if we failed to match the 
> > > precise `accept`, we just try again with the middle argument type being 
> > > unspecified? Whats the difference between this and trying to match with 
> > > `Irrelevant` straight away?
> > >  if we failed to match the precise accept, we just try again with the 
> > > middle argument type being unspecified?
> > Yes. And that will be a successful match in the case where `sockaddr` is a 
> > transparent union.
> > 
> > > Whats the difference between this and trying to match with Irrelevant 
> > > straight away?
> > Yeah, it's a good catch. There is no difference with `accept` because we 
> > don't have any constraints on `sockaddr` anyway. But, the other functions 
> > have fewer constraints with the transparent union.
> > Perhaps we should separate the body of the `Summary` from the `Signature` 
> > and in this case we could reuse that for both signatures. Or as you 
> > suggested we could just match by default with the `Irrelevant`. What do you 
> > think?
> > Perhaps we should separate the body of the Summary from the Signature and 
> > in this case we could reuse that for both signatures. Or as you suggested 
> > we could just match by default with the Irrelevant. What do you think?
> 
> Separating the summary and the signature sounds great! But, that also adds 
> sufficiently complex code that would definitely warrant individual tests, so 
> we should add that as well.
Ok, so I added a new overload to `addToFunctionSummaryMap` that can take a 
`Signature`. This signature is set to the given Summary, this way we can avoid 
the code duplication. Note, this change involved that the Signature is no 
longer a const member of the Summary, plus the Args and Ret cannot be a const 
member anymore of the Signature (we have to overwrite the signature of the 
given summary and that involves the copy assignment op).


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D83407



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to