16

我有一个混合 C 和 C++ 的旧项目。它广泛使用 C 字符串和strcpy, strcat,strncpystrncat。我发现了许多缓冲区溢出,我想使用更安全的函数,例如strcpy_s. MSVC 包括这些功能,但我需要一些可以在各种平台上运行的东西——至少是 linux、osx 和 windows。

我确实知道strlcpy,但正如很多人所指出的(示例),这确实不是一种改进。


strcpy_s那么: ,strcat_s等或整个 ,是否有任何免费实现TR24731-1

我需要的东西是public domainor BSD,但如果您知道其他许可证下的实现,请继续列出它们 - 我相信其他人会受益。

4

3 回答 3

18

尝试使用Safe C库。它在MIT 许可下,并根据此列表实现您正在寻找的功能:

Safe C 库根据 ISO/IEC TR24731 提供边界检查内存和字符串函数。这些函数是现有标准 C 库的替代函数,可促进更安全、更安全的编程

于 2012-04-09T00:37:19.363 回答
5

您可以使用memcpymemset,它们比字符串函数更便携且更安全。

于 2012-04-09T00:38:18.497 回答
1

为什么不使用strncpyand strncat?与strlcpyand相反strlcat,它们是标准的 C 函数。这些功能并不完美,但您可以安全地使用它们。

还要注意,边界检查_s功能在当前标准中是可选的。

于 2012-04-09T00:54:59.487 回答