指针非空就安全?看这Skill

审查 unsafe Rust 代码和 FFI 绑定。

unsafe-checker 是检查 Rust unsafe 代码与外部接口的 Skill。它要求说清为什么需要不安全操作,以及安全条件由谁保证。

裸指针解引用要核有效性、对齐和初始化;形成引用还需遵守别名约束。指针非空不等于对象还活着,NonNull 也不能证明生命周期正确。

调用 C 接口要核签名与调用约定,字符串先存下 CString,再把指针交出去,避免临时对象已被释放。SAFETY 注释应解释依据,公开不安全函数还要写调用者的义务。

主文速查的若干“修法”不能单独当证明:repr(C) 不自动解决所有对齐问题,MaybeUninit 不等于值已初始化,生成绑定也不保证接口使用安全。它适合有代码证据的审查;本文未审查或运行实际 Rust 项目。

分类:测试排错

来源仓库:actionbook/rust-skills

适合用来做什么

  • 审查这段 Rust 代码是否存在不安全操作
  • 分析这个 FFI 接口的潜在风险

安装 unsafe-checker

npx skills add https://www.iskills.cc/skills/actionbook/rust-skills/unsafe-checker/SKILL.md

在本机终端执行安装命令。安装前请阅读原始说明,确认所需工具、账号和权限。

查看安装步骤 · 查看常见问题

查看 unsafe-checker 的用途与原始说明

浏览全部 Skill 指南