是否有任何strcpy_s和/或TR24731-1的免费实现?

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

我知道strlcpy ,但是很多人都注意到( 例子 ),这确实不是一个改进。


那么:是否有strcpy_sstrcat_s等或整个TR24731-1免费实现?

我需要一些public domainBSD ,但如果你知道其他许可证下的实现,请继续列出它们 – 我相信别人会受益。

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

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

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

为什么不使用strncpystrncat ? 与strlcpystrlcat相反,它们是标准的C函数。 这些function并不完美,但您可以安全地使用它们。

并且还要注意,边界检查_s函数在当前标准中是可选的。