<分区>
Mac 上最好的一站式“安全”C 库解决方案是什么?我在“安全”/“不安全”上使用引号,因为关于某些标准库函数的好处或它们假定的改进替代品存在很多争论。
许多传统的标准 C 库函数(例如,vfprintf
)被认为是不安全的,因为可能存在缓冲区溢出或其他安全问题。
在 Windows 上,Microsoft C/C++ 编译器 provide “_s”函数(例如,vfprintf_s
)作为标准库调用的更安全替代方案。这些功能不是直接替代品,因为它们具有提供额外安全信息(例如缓冲区长度)所需的不同签名。它们还提供其他功能,例如无效格式字符串检测、不同的文件安全性等。据我所知,此实现在 Mac 上不可用。
Apple(或第三方)是否提供与 OSX 上的 GCC 类似的东西?
特别是,我正在寻找至少以下功能的“安全”实现:
fopen vfprintf vsprintf sprintf strncpy strcpy strcat
请注意:这个问题是关于 Mac 的。我并不是要征求您对 Microsoft 实现的意见(除非它在 Mac 上可用。)尽管其中一些函数可能很容易由我自己编写,但并非所有函数都是如此。我不是在问如何自己写这些。我不是在寻求有关如何使用 STL 类来执行此操作的提示。我不是在问如何关闭警告。我的特殊需求非常具体。我正在尝试确定一个与传统 C 库调用尽可能相似的最佳实践 Mac API,同时增加安全性。当然,在 Mac 和 Windows(以及其他操作系统)上运行的可移植实现会更好。