经过六年努力和 360 多个补丁,Linux 终于彻底移除了 strncpy API | written by Michael Larabel

🐟 2026-06-21 17:45 1




[!quote]+


Linux 7.2 最终从 Linux 内核中移除了 strncpy API。用于复制指定字节数的 strncpy() 函数早已被弃用,经过六年的努力和数百个补丁的提交,Linux 内核中已不再需要 strncpy 接口,因此它最终被移除。


多年来,Linux 内核中的 strncpy 函数一直是“持续的 bug 源”,原因在于其反直觉的语义和 NUL 终止符的行为,以及由于目标位置冗余的零填充而导致的性能问题。过去六年间,开发者进行了大约 362 次代码提交,才最终在 Linux 7.2 中彻底解决了内核中对 strncpy 代码的依赖问题。



周五的这次合并消除了 strncpy API 和最后一个针对每个 CPU 架构的 strncpy 实现。


Linux 内核代码应该使用 strscpy() 代替 strncpy,用于以 NUL 结尾的目标,strscpy_pad() 代替以 NUL 结尾并进行零填充的目标,strtomem_pad() 代替以非 NUL 结尾的固定宽度字段,memcpy_and_pad() 代替以显式填充的有界副本,或者 memcpy() 代替已知长度的内存副本。



最新回复 (1)
  • EVELance 06-21 20:12
    1

    看来AI铲屎能力还是非常强的,最近铲了不少

* 帖子来源Linux.do
返回