🛠Tools🔥🔥

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

バグと脆弱性の温床だった strncpy を Linux 7.2 で廃止し、strscpy 等の安全な代替 API への完全移行を 6 年越しで完了した。

リリース: 2026-06-20 · 読了 2
何が起きた
  • Linux 7.2 にて strncpy API と各 CPU アーキテクチャ固有の実装がすべて削除された。

  • 2018年から 6 年間で合計 362 件のパッチを適用し、カーネル内の全呼び出し箇所を修正した。

  • strncpy は NUL 終端の挙動が不透明でバグを誘発しやすく、不要なゼロ埋めによる性能劣化も課題だった。

  • 今後は strscpy (NUL 終端保証) や strscpy_pad 等の用途別 API の使用が義務付けられる。

なぜ重要
  • 「とりあえず strncpy」という慣習がカーネルレベルで物理的に封殺されたため、メモリ安全性を考慮した API 選択が開発者の強制的な標準となる。

  • 6 年を要したこの修正は、大規模なレガシーコードベースから安全でない API を一掃する際の実務的な困難さと執念を示している。

👁️ 開発者

カーネルモジュールやドライバを開発するエンジニアは、既存コードの移植時に strncpy がビルドエラーになるため、strscpy 等への置換と終端処理の再検証が必須となる。

🇯🇵 日本

車載機器や産業用 PC 向けの Linux 基盤を保守する国内の組み込みシステム開発ベンダーは、次世代 LTS 版への移行を見据え、独自パッチの静的解析ルールを strncpy 禁止へ更新する必要がある。