|
clang-tools 22.0.0git
|
The base class for all close-on-exec checks in Android module. More...
#include <CloexecCheck.h>
Public Member Functions | |
| CloexecCheck (StringRef Name, ClangTidyContext *Context) | |
Protected Member Functions | |
| void | registerMatchersImpl (ast_matchers::MatchFinder *Finder, const ast_matchers::internal::Matcher< FunctionDecl > &Function) |
| void | insertMacroFlag (const ast_matchers::MatchFinder::MatchResult &Result, StringRef MacroFlag, int ArgPos) |
| Currently, we have three types of fixes. | |
| void | replaceFunc (const ast_matchers::MatchFinder::MatchResult &Result, StringRef WarningMsg, StringRef FixMsg) |
| Type2 is to replace the API to another function that has required the ability. | |
| void | insertStringFlag (const ast_matchers::MatchFinder::MatchResult &Result, char Mode, int ArgPos) |
| Type3 is also to add a flag to the corresponding argument, but this time, the flag is some string and each char represents a mode rather than a macro. | |
| StringRef | getSpellingArg (const ast_matchers::MatchFinder::MatchResult &Result, int N) const |
| Helper function to get the spelling of a particular argument. | |
Static Protected Attributes | |
| static constexpr char | FuncDeclBindingStr [] = "funcDecl" |
| Binding name of the FuncDecl of a function call. | |
| static constexpr char | FuncBindingStr [] = "func" |
| Binding name of the function call expression. | |
The base class for all close-on-exec checks in Android module.
To be specific, there are some functions that need the close-on-exec flag to prevent the file descriptor leakage on fork+exec and this class provides utilities to identify and fix these C functions.
Definition at line 26 of file CloexecCheck.h.
|
inline |
Definition at line 28 of file CloexecCheck.h.
Referenced by clang::tidy::android::CloexecAccept4Check::CloexecAccept4Check(), clang::tidy::android::CloexecAcceptCheck::CloexecAcceptCheck(), clang::tidy::android::CloexecCreatCheck::CloexecCreatCheck(), clang::tidy::android::CloexecDupCheck::CloexecDupCheck(), clang::tidy::android::CloexecEpollCreate1Check::CloexecEpollCreate1Check(), clang::tidy::android::CloexecEpollCreateCheck::CloexecEpollCreateCheck(), clang::tidy::android::CloexecFopenCheck::CloexecFopenCheck(), clang::tidy::android::CloexecInotifyInit1Check::CloexecInotifyInit1Check(), clang::tidy::android::CloexecInotifyInitCheck::CloexecInotifyInitCheck(), clang::tidy::android::CloexecMemfdCreateCheck::CloexecMemfdCreateCheck(), clang::tidy::android::CloexecOpenCheck::CloexecOpenCheck(), clang::tidy::android::CloexecPipe2Check::CloexecPipe2Check(), clang::tidy::android::CloexecPipeCheck::CloexecPipeCheck(), and clang::tidy::android::CloexecSocketCheck::CloexecSocketCheck().
|
protected |
Helper function to get the spelling of a particular argument.
Definition at line 97 of file CloexecCheck.cpp.
References FuncBindingStr.
Referenced by clang::tidy::android::CloexecAcceptCheck::check(), clang::tidy::android::CloexecCreatCheck::check(), clang::tidy::android::CloexecDupCheck::check(), and clang::tidy::android::CloexecPipeCheck::check().
|
protected |
Currently, we have three types of fixes.
Type1 is to insert the necessary macro flag in the flag argument. For example, 'O_CLOEXEC' is required in function 'open()', so
should be
| [out] | Result | MatchResult from AST matcher. |
| MacroFlag | The macro name of the flag. | |
| ArgPos | The 0-based position of the flag argument. |
Definition at line 48 of file CloexecCheck.cpp.
References clang::tidy::utils::exprHasBitFlagWithSpelling(), FuncBindingStr, and FuncDeclBindingStr.
Referenced by clang::tidy::android::CloexecAccept4Check::check(), clang::tidy::android::CloexecEpollCreate1Check::check(), clang::tidy::android::CloexecInotifyInit1Check::check(), clang::tidy::android::CloexecMemfdCreateCheck::check(), clang::tidy::android::CloexecOpenCheck::check(), clang::tidy::android::CloexecPipe2Check::check(), and clang::tidy::android::CloexecSocketCheck::check().
|
protected |
Type3 is also to add a flag to the corresponding argument, but this time, the flag is some string and each char represents a mode rather than a macro.
For example, 'fopen' needs char 'e' in its mode argument string, so
should be
| [out] | Result | MatchResult from AST matcher. |
| Mode | The required mode char. | |
| ArgPos | The 0-based position of the flag argument. |
Definition at line 76 of file CloexecCheck.cpp.
References clang::tidy::android::buildFixMsgForStringFlag(), FuncBindingStr, and FuncDeclBindingStr.
Referenced by clang::tidy::android::CloexecFopenCheck::check().
|
protected |
Definition at line 38 of file CloexecCheck.cpp.
References FuncBindingStr, and FuncDeclBindingStr.
Referenced by clang::tidy::android::CloexecAccept4Check::registerMatchers(), clang::tidy::android::CloexecAcceptCheck::registerMatchers(), clang::tidy::android::CloexecCreatCheck::registerMatchers(), clang::tidy::android::CloexecDupCheck::registerMatchers(), clang::tidy::android::CloexecEpollCreate1Check::registerMatchers(), clang::tidy::android::CloexecEpollCreateCheck::registerMatchers(), clang::tidy::android::CloexecFopenCheck::registerMatchers(), clang::tidy::android::CloexecInotifyInit1Check::registerMatchers(), clang::tidy::android::CloexecInotifyInitCheck::registerMatchers(), clang::tidy::android::CloexecMemfdCreateCheck::registerMatchers(), clang::tidy::android::CloexecOpenCheck::registerMatchers(), clang::tidy::android::CloexecPipe2Check::registerMatchers(), clang::tidy::android::CloexecPipeCheck::registerMatchers(), and clang::tidy::android::CloexecSocketCheck::registerMatchers().
|
protected |
Type2 is to replace the API to another function that has required the ability.
For example:
should be
| [out] | Result | MatchResult from AST matcher. |
| WarningMsg | The warning message. | |
| FixMsg | The fix message. |
Definition at line 69 of file CloexecCheck.cpp.
References FuncBindingStr.
Referenced by clang::tidy::android::CloexecAcceptCheck::check(), clang::tidy::android::CloexecCreatCheck::check(), clang::tidy::android::CloexecDupCheck::check(), clang::tidy::android::CloexecEpollCreateCheck::check(), clang::tidy::android::CloexecInotifyInitCheck::check(), and clang::tidy::android::CloexecPipeCheck::check().
|
staticconstexprprotected |
Binding name of the function call expression.
Definition at line 95 of file CloexecCheck.h.
Referenced by getSpellingArg(), insertMacroFlag(), insertStringFlag(), registerMatchersImpl(), and replaceFunc().
|
staticconstexprprotected |
Binding name of the FuncDecl of a function call.
Definition at line 92 of file CloexecCheck.h.
Referenced by clang::tidy::android::CloexecOpenCheck::check(), insertMacroFlag(), insertStringFlag(), and registerMatchersImpl().