🛠Tools🔥🔥

Linux カーネル、システムプログラミング API strncpy を削除──6年・362パッチを経て Linux 7.2 で達成

バグと脆弱性の温床だった strncpy を Linux 7.2 で廃止し、strscpy 等の安全な代替 API への完全移行を 6 年越しで完了した。
リリース: 2026-06-20 · 読了 2

記事の要約

1. 核心(What)

  • Linux 7.2 にて strncpy API と各 CPU アーキテクチャ固有の実装がすべて削除された。
  • 2018年から 6 年間で合計 362 件のパッチを適用し、カーネル内の全呼び出し箇所を修正した。
  • strncpy は NUL 終端の挙動が不透明でバグを誘発しやすく、不要なゼロ埋めによる性能劣化も課題だった。
  • 今後は strscpy (NUL 終端保証) や strscpy_pad 等の用途別 API の使用が義務付けられる。

2. 影響(Why)

  • 「とりあえず strncpy」という慣習がカーネルレベルで物理的に封殺されたため、メモリ安全性を考慮した API 選択が開発者の強制的な標準となる。
  • 6 年を要したこの修正は、大規模なレガシーコードベースから安全でない API を一掃する際の実務的な困難さと執念を示している。
  • 開発者への影響: カーネルモジュールやドライバを開発するエンジニアは、既存コードの移植時に strncpy がビルドエラーになるため、strscpy 等への置換と終端処理の再検証が必須となる。
  • 日本への影響: 車載機器や産業用 PC 向けの Linux 基盤を保守する国内の組み込みシステム開発ベンダーは、次世代 LTS 版への移行を見据え、独自パッチの静的解析ルールを strncpy 禁止へ更新する必要がある。

3. 根拠・詳細(How)

  • Phoronix (2026-06-20 公開)