





























[!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() 代替以显式填充的有界副本,或者 ...
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。