[clang] While refactoring projects to eradicate unsafe buffer accesses using … (PR #75650)
via cfe-commits
cfe-commits at lists.llvm.org
Fri Dec 15 12:37:24 PST 2023
github-actions[bot] wrote:
<!--LLVM CODE FORMAT COMMENT: {clang-format}-->
:warning: C/C++ code formatter, clang-format found issues in your code. :warning:
<details>
<summary>
You can test this locally with the following command:
</summary>
``````````bash
git-clang-format --diff ec92d74a0ef89b9dd46aee6ec8aca6bfd3c66a54 809bf6f4237f634feaeb7e5b0b88be3a2e4de455 -- clang/test/SemaCXX/warn-unsafe-buffer-usage-warning-data-invocation.cpp clang/include/clang/Analysis/Analyses/UnsafeBufferUsage.h clang/lib/Analysis/UnsafeBufferUsage.cpp clang/lib/Sema/AnalysisBasedWarnings.cpp
``````````
</details>
<details>
<summary>
View the diff from clang-format here.
</summary>
``````````diff
diff --git a/clang/lib/Analysis/UnsafeBufferUsage.cpp b/clang/lib/Analysis/UnsafeBufferUsage.cpp
index e4eca9939b..4e1c76c300 100644
--- a/clang/lib/Analysis/UnsafeBufferUsage.cpp
+++ b/clang/lib/Analysis/UnsafeBufferUsage.cpp
@@ -729,7 +729,7 @@ class DataInvocationGadget : public WarningGadget {
constexpr static const char *const OpTag = "data_invocation_expr";
const ExplicitCastExpr *Op;
- public:
+public:
DataInvocationGadget(const MatchFinder::MatchResult &Result)
: WarningGadget(Kind::DataInvocation),
Op(Result.Nodes.getNodeAs<ExplicitCastExpr>(OpTag)) {}
@@ -737,12 +737,12 @@ class DataInvocationGadget : public WarningGadget {
static bool classof(const Gadget *G) {
return G->getKind() == Kind::DataInvocation;
}
-
+
static Matcher matcher() {
- return stmt(
- explicitCastExpr(has(cxxMemberCallExpr(callee(
- cxxMethodDecl(hasName("data")))))).bind(OpTag));
- }
+ return stmt(explicitCastExpr(has(cxxMemberCallExpr(
+ callee(cxxMethodDecl(hasName("data"))))))
+ .bind(OpTag));
+ }
const Stmt *getBaseStmt() const override { return Op; }
DeclUseList getClaimedVarUseSites() const override { return {}; }
@@ -2684,7 +2684,7 @@ void clang::checkUnsafeBufferUsage(const Decl *D,
// every problematic operation and consider it done. No need to deal
// with fixable gadgets, no need to group operations by variable.
for (const auto &G : WarningGadgets) {
- Handler.handleUnsafeOperation(G->getBaseStmt(), /*IsRelatedToDecl=*/false,
+ Handler.handleUnsafeOperation(G->getBaseStmt(), /*IsRelatedToDecl=*/false,
D->getASTContext());
}
@@ -2920,8 +2920,8 @@ void clang::checkUnsafeBufferUsage(const Decl *D,
Tracker, Handler, VarGrpMgr);
for (const auto &G : UnsafeOps.noVar) {
- Handler.handleUnsafeOperation(G->getBaseStmt(), /*IsRelatedToDecl=*/false
- , D->getASTContext());
+ Handler.handleUnsafeOperation(G->getBaseStmt(), /*IsRelatedToDecl=*/false,
+ D->getASTContext());
}
for (const auto &[VD, WarningGadgets] : UnsafeOps.byVar) {
@@ -2932,8 +2932,8 @@ void clang::checkUnsafeBufferUsage(const Decl *D,
: FixItList{},
D);
for (const auto &G : WarningGadgets) {
- Handler.handleUnsafeOperation(G->getBaseStmt(), /*IsRelatedToDecl=*/true
- , D->getASTContext());
+ Handler.handleUnsafeOperation(G->getBaseStmt(), /*IsRelatedToDecl=*/true,
+ D->getASTContext());
}
}
}
diff --git a/clang/lib/Sema/AnalysisBasedWarnings.cpp b/clang/lib/Sema/AnalysisBasedWarnings.cpp
index 4f8e181806..bcf3241514 100644
--- a/clang/lib/Sema/AnalysisBasedWarnings.cpp
+++ b/clang/lib/Sema/AnalysisBasedWarnings.cpp
@@ -2226,7 +2226,7 @@ public:
UnsafeBufferUsageReporter(Sema &S, bool SuggestSuggestions)
: S(S), SuggestSuggestions(SuggestSuggestions) {}
- void handleUnsafeOperation(const Stmt *Operation, bool IsRelatedToDecl,
+ void handleUnsafeOperation(const Stmt *Operation, bool IsRelatedToDecl,
ASTContext &Ctx) override {
SourceLocation Loc;
SourceRange Range;
@@ -2263,19 +2263,21 @@ public:
MsgParam = 3;
} else if (const auto *ECE = dyn_cast<ExplicitCastExpr>(Operation)) {
QualType destType = ECE->getType();
- const uint64_t dSize = Ctx.getTypeSize(destType.getTypePtr()->getPointeeType());
- if(const auto *CE =dyn_cast<CXXMemberCallExpr>(ECE->getSubExpr())) {
+ const uint64_t dSize =
+ Ctx.getTypeSize(destType.getTypePtr()->getPointeeType());
+ if (const auto *CE = dyn_cast<CXXMemberCallExpr>(ECE->getSubExpr())) {
+
+ if (CE->getRecordDecl()->getQualifiedNameAsString().compare(
+ "std::span"))
+ return;
- if(CE->getRecordDecl()->getQualifiedNameAsString().compare("std::span"))
- return;
-
QualType srcType = CE->getType();
- const uint64_t sSize = Ctx.getTypeSize(srcType.getTypePtr()->getPointeeType());
- if(sSize >= dSize)
+ const uint64_t sSize =
+ Ctx.getTypeSize(srcType.getTypePtr()->getPointeeType());
+ if (sSize >= dSize)
return;
}
MsgParam = 4;
-
}
Loc = Operation->getBeginLoc();
Range = Operation->getSourceRange();
``````````
</details>
https://github.com/llvm/llvm-project/pull/75650
More information about the cfe-commits
mailing list