我正在阅读有关在以下位置使用安全字符串的信息
https://www.securecoding.cert.org/confluence/pages/viewpage.action?pageId=5111861
如下所述。
如果使用得当,SafeStr 字符串可以消除许多此类错误,并且还可以向后兼容遗留代码。
我的问题是作者所说的“也为遗留代码提供向后兼容性”是什么意思。? 要求举例说明。
感谢您的时间和帮助
我正在阅读有关在以下位置使用安全字符串的信息
https://www.securecoding.cert.org/confluence/pages/viewpage.action?pageId=5111861
如下所述。
如果使用得当,SafeStr 字符串可以消除许多此类错误,并且还可以向后兼容遗留代码。
我的问题是作者所说的“也为遗留代码提供向后兼容性”是什么意思。? 要求举例说明。
感谢您的时间和帮助
这意味着来自标准 libc(和其他)的函数需要普通的、以空结尾的字符数组,甚至可以在这些SafeStr
s 上工作。这可能是通过将控制结构置于字符串开头的负偏移量(或其他技巧)来实现的。
示例:strcmp()
printf()
etc 可以直接用于 SafeStr 返回的字符串。
相比之下,还有其他C 的字符串库非常“智能”和动态,但这些字符串如果不转换为“老派”函数就无法发送。
从该页面:
该库基于与 char * 完全兼容的 safestr_t 类型。这允许将 safestr_t 结构转换为 char *。
这与所有现有的接受char *
或const char *
指针的代码有一些向后兼容性。