是否有任何strcpy_s和/或TR24731-1的免费实现?
我有一个混合了C和C ++的旧项目。 它广泛使用C字符串以及strcpy
, strcat
, strncpy
, strncat
等。我发现了许多缓冲区溢出,我想使用更安全的函数,例如strcpy_s
。 MSVC包含这些function,但我需要能够在各种平台上运行的东西 – 至少是linux,osx和windows。
我知道strlcpy
,但是很多人都注意到( 例子 ),这确实不是一个改进。
那么:是否有strcpy_s
, strcat_s
等或整个TR24731-1
免费实现?
我需要一些public domain
或BSD
,但如果你知道其他许可证下的实现,请继续列出它们 – 我相信别人会受益。
尝试使用Safe C库。 它在MIT许可下 ,根据此列表实现您正在寻找的function:
Safe C Library根据ISO / IEC TR24731提供绑定的检查内存和字符串函数。 这些函数是现有标准C库的替代函数,可以促进更安全,更安全的编程
您可以使用memcpy
和memset
等,它们比字符串函数更便携,更安全。
为什么不使用strncpy
和strncat
? 与strlcpy
和strlcat
相反,它们是标准的C函数。 这些function并不完美,但您可以安全地使用它们。
并且还要注意,边界检查_s
函数在当前标准中是可选的。