sprintfの危険な使用

sprintfの危険な使用

説明

sprintf は出力バッファーのサイズを受け取らないため、整形した結果が出力先バッファーを超えるおそれがあります。

想定される影響

  • スタックやヒープのバッファーオーバーフロー

対処方法

snprintf またはサイズ制限を適用する整形用APIを使ってください。

例

変更前

c
char buf[32];
sprintf(buf, "%s", name);

変更後

c
char buf[32];
snprintf(buf, sizeof(buf), "%s", name);

説明:

  • 変更前: 出力長を制限していません。
  • 変更後: 出力先のサイズを明示して、出力を制限します。

参考資料