Linux 历经六年、360个补丁,正式废除 strncpy API

Hacker News Top 新闻

摘要

Linux 7.2 终于在经过六年和超过360个补丁后移除了已弃用的 strncpy API,因其易出错,转而使用更安全的替代方案如 strscpy 和 memcpy。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/06/20 23:18

Linux 历经六年、360+补丁,终于彻底移除 strncpy API

来源:https://www.phoronix.com/news/Linux-7.2-Drops-strncpy LINUX KERNEL

Linux 7.2 终于彻底移除了 Linux 内核中的 strncpy API。strncpy() 函数用于拷贝指定字节数的内容,早已被弃用。经过六年的努力和数百个补丁,内核中不再有 strncpy 接口的使用者,现已正式移除。

Linux 内核中的 strncpy 函数多年来一直是“持续不断的错误源头”,原因在于其反直觉的语义和关于 NUL 终止的行为,以及因目的地冗余零填充导致的性能问题。过去六年间,大约 362 个提交致力于消除内核中 strncpy 代码的使用者,如今在 Linux 7.2 中终于完成了这项工作。

strncpy

本合并请求 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1a3746ccbb0a97bed3c06ccde6b880013b1dddc1) 于周五移除了 strncpy API 以及各 CPU 架构下最后的 strncpy 实现。

取代 strncpy 后,Linux 内核代码应使用:

  • strscpy() 用于 NUL 终止的目标;
  • strscpy_pad() 用于带零填充的 NUL 终止目标;
  • strtomem_pad() 用于非 NUL 终止的固定宽度字段;
  • memcpy_and_pad() 用于带显式填充的有界拷贝;
  • 或 memcpy() 用于已知长度的内存拷贝。

相似文章

Linux 移除 strncpy

Hacker News Top

Linux 内核历经六年、超过 360 个补丁,终于移除了危险的 strncpy 函数,改用 strscpy 等更安全的替代方案,确保 NULL 终止。

CVE-2026-31431: Copy Fail

Lobsters Hottest

CVE-2026-31431(Copy Fail)是Linux内核中的一个本地提权漏洞,影响自2017年以来的所有主流发行版,允许非特权用户通过AF_ALG加密子系统对任何可读文件的页缓存进行确定性的4字节写入,从而获得root shell访问权限。