説明
sprintf は出力バッファーのサイズを受け取らないため、整形した結果が出力先バッファーを超えるおそれがあります。
想定される影響
- スタックやヒープのバッファーオーバーフロー
対処方法
snprintf またはサイズ制限を適用する整形用APIを使ってください。
例
変更前
c
char buf[32];
sprintf(buf, "%s", name);
変更後
c
char buf[32];
snprintf(buf, sizeof(buf), "%s", name);
説明:
- 変更前: 出力長を制限していません。
- 変更後: 出力先のサイズを明示して、出力を制限します。