首页 > 解决方案 > 什么是 __attribute__((__bounded__(__string__,2,3)))?

问题描述

我是 openbsd bcrypt 代码,在下面的代码片段中收到未知属性的警告

void SHA256Update(SHA2_CTX *, const void *, size_t)
__attribute__((__bounded__(__string__,2,3)));

我试图用谷歌搜索有界的属性,但没有找到相关结果。我想将该代码移植到不同的平台,如果我得到有界属性的含义,我想使用该平台的类似属性。

任何建议将不胜感激!

标签: bcryptopenbsd

解决方案


__bounded__属性在函数声明的上下文中可用,以便能够使用另一个函数参数的值来确定函数参数之一指向的内存区域的长度;第一个参数稍微改变了不同风格函数的检查类型。

在这种情况下,它将函数的第二个参数的类型增加为第三个参数指定的长度;__string__绑定样式还检查大小参数不是来自sizeof应用于指针的,因为您想要目标的大小。

它仅在 OpenBSD 的 GCC 分支中可用(请参阅 参考资料man 1 gcc-local);还有一个短命的 GNU C 扩展(在 2000 年和 2003 年之间),名称相同,目的相同,它是一个直接类型限定符,也可以在函数声明之外使用,但是,AFAIK 没有记录。


推荐阅读