[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