bcrypt - 什么是 __attribute__((__bounded__(__string__,2,3)))?
问题描述
我是 openbsd bcrypt 代码,在下面的代码片段中收到未知属性的警告:
void SHA256Update(SHA2_CTX *, const void *, size_t)
__attribute__((__bounded__(__string__,2,3)));
我试图用谷歌搜索有界的属性,但没有找到相关结果。我想将该代码移植到不同的平台,如果我得到有界属性的含义,我想使用该平台的类似属性。
任何建议将不胜感激!
解决方案
该__bounded__
属性在函数声明的上下文中可用,以便能够使用另一个函数参数的值来确定函数参数之一指向的内存区域的长度;第一个参数稍微改变了不同风格函数的检查类型。
在这种情况下,它将函数的第二个参数的类型增加为第三个参数指定的长度;__string__
绑定样式还检查大小参数不是来自sizeof
应用于指针的,因为您想要目标的大小。
它仅在 OpenBSD 的 GCC 分支中可用(请参阅 参考资料man 1 gcc-local
);还有一个短命的 GNU C 扩展(在 2000 年和 2003 年之间),名称相同,目的相同,它是一个直接类型限定符,也可以在函数声明之外使用,但是,AFAIK 没有记录。
推荐阅读
- excel - 将 Outlook 联系人链接到 VBA 用户表单中的下拉列表
- visual-studio-code - VSCode - 将当前未保存的文件版本与磁盘上保存的版本进行比较
- python - 读取所有功能仅读取列表的第一个条目
- plsql - 在 Oracle Apex 中设置对话框模式页面的初始位置
- apache-spark - 将 PySpark 数据帧转换为 Delta 表
- sql - Biq 查询:Regexp_Contains(如!:))
- regex - 我想要一个满足以下条件的正则表达式
- javascript - 正则表达式匹配确切的出现次数
- go - 如何检查 go 通道是否真的在等待数据?
- go - gorm 选择并以切片的形式返回一列