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