[clang] [clang] Warn on umask() argument bits outside 0777 (PR #198130)
Aaron Ballman via cfe-commits
cfe-commits at lists.llvm.org
Fri May 22 08:53:29 PDT 2026
================
@@ -1490,6 +1490,49 @@ void Sema::checkFortifiedBuiltinMemoryFunction(FunctionDecl *FD,
<< FunctionName << DestinationStr << SourceStr);
}
+void Sema::checkFortifiedLibcArgument(FunctionDecl *FD, CallExpr *TheCall) {
+ if (TheCall->isValueDependent() || TheCall->isTypeDependent() ||
+ isConstantEvaluatedContext())
+ return;
+ if (!FD->isExternC())
+ return;
+ const IdentifierInfo *II = FD->getIdentifier();
+ if (!II)
+ return;
+
+ // umask(mode_t): warn when the constant-evaluated argument has bits set
+ // outside the file-permission mask (0777). Those bits are ignored.
+ // Require a matching system-header declaration to avoid warning on
+ // user-defined lookalikes.
+ auto AnyDeclInSystemHeader = [&](const FunctionDecl *F) {
----------------
AaronBallman wrote:
C allows you to declare the function without including the header; is the same true for POSIX? If so, that means folks doing that dance will lose the diagnostic (which is not the end of the world, but worth documenting if we want to keep this requirement).
https://github.com/llvm/llvm-project/pull/198130
More information about the cfe-commits
mailing list