[PATCH] D86029: [analyzer] Add modeling for unque_ptr::get()

Gábor Horváth via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Aug 17 03:55:50 PDT 2020


xazax.hun accepted this revision.
xazax.hun added inline comments.


================
Comment at: clang/lib/StaticAnalyzer/Checkers/SmartPtrModeling.cpp:362-363
+  const auto *InnerPointVal = State->get<TrackedRegionMap>(ThisRegion);
+  if (!InnerPointVal)
+    return;
+
----------------
NoQ wrote:
> You'll have to actively handle this case, sooner or later. Consider the following test cases that won't work until you do:
> ```lang=c++
> void foo(std::unique_ptr<A> p) {
>   A *x = p.get();
>   A *y = p.get();
>   clang_analyzer_eval(x == y); // expected-warning{{TRUE}}
>   if (!x) {
>     y->foo(); // expected-warning{{Called C++ object pointer is null}}
>   }
> }
> 
> ```
You mean the case where we do not have an inner pointer registered in the state yet, right?

I believe we might also have to handle similar cases for `operator bool()` as well. 


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D86029



More information about the cfe-commits mailing list