修复方案如清单

1(c)第8-9行所示:将recordptr参数改为泛型受检类型(使用全称量化_For_any保证安全性)。重新运行3C后得到完全转换的1(c)。

第二阶段
当第一阶段无法完成全部迁移时,此时存在两个代码版本:
(a) 原始版本:已通过多次重构,可能包含少量Checked C注解
(b) 3C生成的注解版本
本阶段需手动完成(b)版本文件的迁移,将其合并至(a)版本并测试。3C利用互操作类型(itype)简化该过程:第二阶段开始时直接复用itype注解的头文件,确保其兼容注解/非注解代码。有时对合并后的文件再次运行3C可传播手动修改。

迁移过程中可能发现空间安全性缺陷:

程序员可在第二阶段随时中止迁移,仍能获得可运行、已测试且安全性提升的代码版本。

4 TYP3C的类型推断机制

3C首先通过全程序分析工具typ3c将传统指针转换为受检指针,其包含两部分:

高效的空间内存安全