Checked C向C添加了静态和动态检查,以检测或防止常见的编程错误,例如缓冲区溢出和越界内存访问。该项目的目标是通过对C进行根本改进来改善系统编程。此回购包含示例代码,扩展规范和测试代码。
有关Checked C的快速概述,更多信息以及指向示例代码的指针,请参见我们的Wiki。
Checked C clang Wiki中记录了构建和测试Checked C编译器的说明。
我们在IEEE 2018网络安全开发会议上发表了关于Checked C的研究论文:Checked C:通过Extension使C安全。本文在8页中介绍了Checked C的关键思想。请注意,自撰写论文以来,我们已向Checked C添加了一些功能,以提高类型安全性(并减少类型混淆)。 Wiki和规范提供了Checked C的最新描述。
我们在2019年安全与信任原则会议上发表了另一篇有关Checked C的论文:使用Checked C逐步实现安全性。本文介绍了一种将现有C代码转换为使用Ptr类型的工具。它还证明了受检查区域的不当行为,表明受检查区域对任何内存损坏均无罪。此证明已针对语言扩展的核心子集形式化。
我们在LLVM开发人员会议2019上发布了海报:"溢出:内存安全检查为C&#34 ;.海报提供了Checked C的简介,概述了编译器的实现,并提供了Checked C的实验评估。
我们在2020年LLVM虚拟开发会议上发表了演讲:“已检查C:向LLVM添加内存安全支持”。演讲描述了用于检查的指针和数组指针的边界注释的设计,以及用于静态检查边界的健全性的框架。我们还简要描述了新颖的算法,该算法可自动扩大以null结尾的数组的范围,并比较等价的表达式。
我们很高兴获得帮助! 您可以通过试用Checked C,报告错误并提供反馈来做出贡献。 还有其他贡献方式。您可以加入邮件列表以获取有关该项目的公告。 该存储库中的软件受MIT许可证保护。 有关许可证,请参阅文件LICENSE.TXT。 Microsoft根据OpenWeb Foundation FinalSpecification Agreement 1.0版提供了Checked C规范。对Checked LLVM / clang存储库的代码贡献受CLANG / LLVM许可条款的约束。 该项目采用了Microsoft开源行为准则。有关更多信息,请参见行为准则常见问题解答,或与任何其他问题或评论联系[email protected]。