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 禁止へ更新する必要がある。