steakhal added a comment.

In D97183#2597099 <https://reviews.llvm.org/D97183#2597099>, @RedDocMD wrote:

> The InnerPointerVal memory region is not marked as interesting as of now, I 
> have tried that out. The branch condition constraint is set by the 
> ConstraintManager and it is queried via in the State in the method 
> `smartptr::isNullSmartPtr` at `SmartPtrModelling.cpp:104`. I have to see if 
> the `ConstraintManager` can mark the memory region as important.

Hm, I don't think you can make this work.
The deref bug is reported only if the smartptr::isNullSmartPtr(State, 
ThisRegion) 
<https://github.com/llvm/llvm-project/blob/main/clang/lib/StaticAnalyzer/Checkers/SmartPtrChecker.cpp#L74-L75>
 is `true`. Which is only true if the InnerPointVal 
<https://github.com/llvm/llvm-project/blob/main/clang/lib/StaticAnalyzer/Checkers/SmartPtrModeling.cpp#L104-L108>
 is known to be `null`. So the information on how we get to know that the smart 
pointer is null is already lost.
From this perspective, I don't think you have any other choice than to walk 
back from the bug to the root using a bugreport visitor - and check whether or 
not the inner pointer is used in a branch condition.
I might be wrong about this, since this was the first time I had a deeper look 
at the SmartPtrChecker.

The TaintBugVisitor 
<https://github.com/llvm/llvm-project/blob/62ec4ac90738a5f2d209ed28c822223e58aaaeb7/clang/lib/StaticAnalyzer/Checkers/Taint.cpp#L232>
 could give you a hint on how to implement this.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D97183

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

Reply via email to