diff options
author | Ziqing Luo <ziqing@udel.edu> | 2024-09-04 12:34:43 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-04 12:34:43 -0700 |
commit | 0fffdeb5f46078ddcc61e112cd38856b1165f050 (patch) | |
tree | fc93155460ad3fc56d9581f323deae49db562505 /clang/lib/Sema/AnalysisBasedWarnings.cpp | |
parent | ebf0599314e17c3ab89f303d452811b1db3e6d1e (diff) | |
download | llvm-0fffdeb5f46078ddcc61e112cd38856b1165f050.zip llvm-0fffdeb5f46078ddcc61e112cd38856b1165f050.tar.gz llvm-0fffdeb5f46078ddcc61e112cd38856b1165f050.tar.bz2 |
[-Wunsafe-buffer-usage] Warning Libc functions (#101583)
[-Wunsafe-buffer-usage] Add warn on unsafe calls to libc functions
Warning about calls to libc functions involving buffer access. Warned
functions are hardcoded by names.
(rdar://117182250)
Diffstat (limited to 'clang/lib/Sema/AnalysisBasedWarnings.cpp')
-rw-r--r-- | clang/lib/Sema/AnalysisBasedWarnings.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/clang/lib/Sema/AnalysisBasedWarnings.cpp b/clang/lib/Sema/AnalysisBasedWarnings.cpp index e6ce89d..72078ae 100644 --- a/clang/lib/Sema/AnalysisBasedWarnings.cpp +++ b/clang/lib/Sema/AnalysisBasedWarnings.cpp @@ -2304,6 +2304,20 @@ public: } } + void handleUnsafeLibcCall(const CallExpr *Call, unsigned PrintfInfo, + ASTContext &Ctx, + const Expr *UnsafeArg = nullptr) override { + S.Diag(Call->getBeginLoc(), diag::warn_unsafe_buffer_libc_call) + << Call->getDirectCallee() // We've checked there is a direct callee + << Call->getSourceRange(); + if (PrintfInfo > 0) { + SourceRange R = + UnsafeArg ? UnsafeArg->getSourceRange() : Call->getSourceRange(); + S.Diag(R.getBegin(), diag::note_unsafe_buffer_printf_call) + << PrintfInfo << R; + } + } + void handleUnsafeOperationInContainer(const Stmt *Operation, bool IsRelatedToDecl, ASTContext &Ctx) override { |