4

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

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

如下所述。

如果使用得当,SafeStr 字符串可以消除许多此类错误,并且还可以向后兼容遗留代码。

我的问题是作者所说的“也为遗留代码提供向后兼容性”是什么意思。? 要求举例说明。

感谢您的时间和帮助

4

2 回答 2

3

这意味着来自标准 libc(和其他)的函数需要普通的、以空结尾的字符数组,甚至可以在这些SafeStrs 上工作。这可能是通过将控制结构置于字符串开头的负偏移量(或其他技巧)来实现的。

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

相比之下,还有其他C 的字符串库非常“智能”和动态,但这些字符串如果不转换为“老派”函数就无法发送。

于 2013-04-09T14:28:06.840 回答
3

从该页面:

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

这与所有现有的接受char *const char *指针的代码有一些向后兼容性。

于 2013-04-09T14:29:53.193 回答