strcatの危険な使用

strcatの危険な使用

説明

strcat と wcscat は、出力先の残り容量を確認せずに文字列を追加します。

想定される影響

  • バッファーオーバーフロー、メモリ破損

対処方法

出力先の容量を計算し、長さを制限するAPIや安全な文字列型を使ってください。

例

変更前

c
char dst[32] = "";
strcat(dst, user);

変更後

c
char dst[32] = "";
strncat(dst, user, sizeof(dst) - strlen(dst) - 1);

説明:

  • 変更前: 出力先の空き容量を考慮せずに、ユーザーの文字列を追加します。
  • 変更後: 現在の文字列長を差し引いた残りの容量に、追加する長さを制限します。

参考資料