Linux内核开发人员探讨如何“减少C语言的问题”

Hewlett-Packard的企业博客总结了Linux内核开发人员Kees Cook在2018年Linux安全峰会北美版上的演讲。“如何减少C语言的bug。” “C语言是一个奇特的汇编程序。它几乎代表了机器代码,”库克说,他对数百名同行的观众说道,他们理解并赞赏C语言所带来的应用程序速度......随着时间的推移,库克和他的团队发现了无数原生C语言的问题。为了解决这些问题,创建了内核自我保护项目,其在保护Linux内核免受攻击方面工作进行缓慢但又稳定。在这个过程中,它已经努力从Linux中删除麻烦的代码.... 凭借其操作包和弱标准库,C语言包含大量未定义的行为。库克引用Raph Levien的博客文章并表示赞同“ 未定义的行为,一切皆有可能”。库克举了具体的例子。“未初始化变量的内容是什么?就是以前没有变化的内容。Void指针没有类型,但我们可以通过它们调用类型函数吗?当然可以。程序集并不关心:一切都可以当成一个地址来调用!为什么memcpy()没有“最大目标长度”参数?只要按我说的做;内存区域都是一样的。“ 其中一些特性相对容易处理。库克表示,“Linus Torvalds喜欢总是初始化局部变量的想法。所以你应该放手去做。 长期解决方案?更安全的开源开发人员......虽然有时候提出Linux C语言的想法很有吸引力,但这种情况不会发生。危险代码问题背后的真正问题是“人们不想做清理代码的工作 - 不仅仅是糟糕的代码,而是C语言本身,”他表示。与所有开源项目一样,“我们需要更多专门的开发人员,审核人员,测试人员和后端管理人员。”

LWN.net有自己的库克谈话,以及他幻灯片PDF文件的链接。 “听起来不错。”他们的一位评论者表示,“尽管最终我还是希望内核开发人员将Rust作为他们主要的Linux内核开发语言。打败C和C ++的阵营。”

  • 发表于:
  • 原文链接http://developers.slashdot.org/story/18/09/01/2311248/how-linuxs-kernel-developers-make-c-less-dangerous
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券