[PATCH] D83717: [clang-tidy] Add check fo SEI CERT item ENV32-C

Nathan James via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Aug 3 07:06:19 PDT 2020


njames93 added inline comments.


================
Comment at: clang-tools-extra/clang-tidy/cert/ExitHandlerCheck.cpp:33
+bool isExitFunction(StringRef FnName) {
+  return FnName == "_Exit" || FnName == "exit" || FnName == "quick_exit";
+}
----------------
whisperity wrote:
> aaron.ballman wrote:
> > Because this rule applies in C++ as well as C, you should protect these names so that calling something like this doesn't trigger the check:
> > ```
> > namespace menu_items {
> > void exit(int);
> > }
> > ```
> > I think we want `::_Exit` and `::std::_Exit` to check the fully qualified names (I believe this will still work in C, but should be tested). The same goes for the other names (including `atexit` and `at_quick_exit` above).
> > I think we want `::_Exit` and `::std::_Exit` to check the fully qualified names (I believe this will still work in C, but should be tested).
> 
> Tested with Clang-Query:
> 
> ```
> clang-query> m functionDecl(hasName("::atexit"))
> 
> Match #1:
> 
> /home/whisperity/LLVM/Build/foo.c:1:1: note: "root" binds here
> int atexit(int) {}
> ^~~~~~~~~~~~~~~~~~
> 1 match.
> ```
That only works because the logic inside the `hasName`matcher 


================
Comment at: clang-tools-extra/clang-tidy/cert/ExitHandlerCheck.cpp:32
 /// 'quick_exit'
 bool isExitFunction(StringRef FnName) {
   return FnName == "_Exit" || FnName == "exit" || FnName == "quick_exit";
----------------
This should take a pointer to the function to run other checks, like checking its decl context. 


================
Comment at: clang-tools-extra/clang-tidy/cert/ExitHandlerCheck.cpp:37
 /// Only 'longjmp' is considered.
 bool isJumpFunction(StringRef FnName) { return FnName == "longjmp"; }
 
----------------
Ditto


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D83717



More information about the cfe-commits mailing list