================
@@ -1601,6 +1601,23 @@ void
Sema::checkFortifiedBuiltinMemoryFunction(FunctionDecl *FD,
BufferSize = Checker.ComputeSizeArgument(0);
break;
}
+ case Builtin::BIrealpath: {
+ BufferSize = Checker.ComputeSizeArgument(1);
+ if (!BufferSize)
+ return;
+ const llvm::Triple &T = Context.getTargetInfo().getTriple();
+ uint64_t PathMax = 0;
+ if (T.isOSLinux() || T.isOSFuchsia() || T.isOSAIX() || T.isOSHaiku())
+ PathMax = 4096;
+ else if (T.isOSDarwin() || T.isOSFreeBSD() || T.isOSNetBSD() ||
+ T.isOSOpenBSD() || T.isOSSolaris())
+ PathMax = 1024;
+ else
+ return;
----------------
enh-google wrote:
> Keeping the diagnostic wording focused on the non-null buffer's size ("at
> least %2 bytes are required") rather than suggesting NULL also avoids
> @enh-google's point about targets/OS versions where realpath(path, NULL) may
> not be supported.
i know why you went that way, but to be clear: "callers should prefer null, and
suggesting null is better advice".
does anyone actually care about systems that don't even support this posix 2008
requirement?
https://github.com/llvm/llvm-project/pull/230695
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits