在C中使用SafeStr

时间:2013-04-09 14:24:53

标签: c

我正在阅读有关在以下位置使用安全字符串的信息

https://www.securecoding.cert.org/confluence/pages/viewpage.action?pageId=5111861

如下所述。

SafeStr字符串,如果使用得当,可以消除许多这些错误,并提供对遗留代码的向后兼容性。

我的问题是作者的意思是“同时提供对遗留代码的向后兼容性”。 ?要求用例子解释。

感谢您的时间和帮助

2 个答案:

答案 0 :(得分:3)

这意味着标准libc(和其他)中需要普通的,以null结尾的char数组的函数甚至可以在那些SafeStr上运行。这可能是通过将控制结构放在字符串开头的负偏移(或其他一些技巧)来实现的。

示例:strcmp() printf()等可以直接用于SafeStr返回的字符串。

相比之下,C还有其他字符串库非常“智能”且动态,但如果不转换为“旧学校”功能,则无法发送这些字符串。

答案 1 :(得分:3)

从该页面开始:

  

该库完全基于safestr_t类型   与char *兼容。这允许将safestr_t结构转换为   char *。

这与使用char *const char *指针的所有现有代码向后兼容。