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