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

时间:2012-04-09 00:32:20

标签: c string security cross-platform tr24731

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

我知道strlcpy,但正如很多人注意到的那样(example),这确实不是一种改进。


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

我需要public domainBSD,但如果您知道其他许可下的实施,请继续列出 - 我相信其他人也会受益。

3 个答案:

答案 0 :(得分:12)

尝试使用Safe C库。它位于MIT license之下,根据此list实现了您正在寻找的功能:

  

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

答案 1 :(得分:4)

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

答案 2 :(得分:1)

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

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