brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.4 KiB · d30b456 Raw
36 lines · c
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_ANDROID_CLOEXECOPENCHECK_H10#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_ANDROID_CLOEXECOPENCHECK_H11 12#include "CloexecCheck.h"13 14namespace clang::tidy::android {15 16/// Finds code that opens file without using the O_CLOEXEC flag.17///18/// open(), openat(), and open64() had better to include O_CLOEXEC in their19/// flags argument. Only consider simple cases that the corresponding argument20/// is constant or binary operation OR among constants like 'O_CLOEXEC' or21/// 'O_CLOEXEC | O_RDONLY'. No constant propagation is performed.22///23/// Only the symbolic 'O_CLOEXEC' macro definition is checked, not the concrete24/// value.25class CloexecOpenCheck : public CloexecCheck {26public:27  CloexecOpenCheck(StringRef Name, ClangTidyContext *Context)28      : CloexecCheck(Name, Context) {}29  void registerMatchers(ast_matchers::MatchFinder *Finder) override;30  void check(const ast_matchers::MatchFinder::MatchResult &Result) override;31};32 33} // namespace clang::tidy::android34 35#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_ANDROID_CLOEXECOPENCHECK_H36