説明
strcat と wcscat は、出力先の残り容量を確認せずに文字列を追加します。
想定される影響
- バッファーオーバーフロー、メモリ破損
対処方法
出力先の容量を計算し、長さを制限するAPIや安全な文字列型を使ってください。
例
変更前
c
char dst[32] = "";
strcat(dst, user);
変更後
c
char dst[32] = "";
strncat(dst, user, sizeof(dst) - strlen(dst) - 1);
説明:
- 変更前: 出力先の空き容量を考慮せずに、ユーザーの文字列を追加します。
- 変更後: 現在の文字列長を差し引いた残りの容量に、追加する長さを制限します。