Hasty Briefsbeta

双语

6 years and 360 patches to clean all instances of strnpy out of the Linux kernel

17 days ago
  • #Linux Security
  • #String Functions
  • #C Programming
  • C 字符串库虽然速度快,但如果使用不当可能导致缓冲区溢出错误,从而带来安全风险。
  • strcpy() 在源字符串大于目标缓冲区或未以 NULL 终止时存在问题,可能让黑客覆盖内存。
  • strncpy() 被引入以限制复制长度,但常导致字符串未被 NULL 终止,引发错误和不必要的填充。
  • Linux 花费了六年时间,通过超过 360 个补丁移除了 strncpy,改用像 strscpy() 这样能保证 NULL 终止且语义更清晰的函数。
  • 新函数如 strscpy_pad() 和 strtomem_pad() 将字符串复制与填充分离,提高了安全性和效率。
  • 尽管存在缺陷,C 字符串库自 1972 年以来一直被广泛使用,这些更新旨在修复缺点,同时保持效率。