[PATCH] D55388: [analyzer] MoveChecker Pt.8: Add checks for dereferencing a smart pointer after move.
Artem Dergachev via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Dec 6 15:03:02 PST 2018
NoQ created this revision.
NoQ added reviewers: dcoughlin, xazax.hun, a_sidorin, george.karpenkov, szepet, rnkovacs, Szelethus.
Herald added subscribers: cfe-commits, dkrupp, donat.nagy, mikhail.ramalho, a.sidorin, baloghadamsoftware.
Calling `operator*()` or `operator->()` on a null STL smart pointer is undefined behavior.
Smart pointers are specified to become null after being moved from. So we can't warn on arbitrary method calls, but these two operators definitely make no sense.
The new bug is fatal, because it's UB unlike other use-after-move bugs.
Generally, we should also make a checker for dereferencing smart pointers that are known to be null, regardless of why they are null. Probably these checkers could interact somehow. But this case is kinda handy and is available to us almost for free.
Repository:
rC Clang
https://reviews.llvm.org/D55388
Files:
lib/StaticAnalyzer/Checkers/MoveChecker.cpp
test/Analysis/use-after-move.cpp
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D55388.177061.patch
Type: text/x-patch
Size: 15616 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20181206/5dbfea4b/attachment-0001.bin>
More information about the cfe-commits
mailing list