チケット #40764

コマンドライン引数の文字化け

登録: 2020-09-23 13:52 最終更新: 2023-04-26 23:10

報告者:
(匿名)
担当者:
チケットの種類:
状況:
完了
コンポーネント:
マイルストーン:
優先度:
5 - 中
重要度:
9 - 最高
解決法:
修正済み
ファイル:
なし
投票
点数: 0
No votes
0.0% (0/0)
0.0% (0/0)

詳細

Tera Term Menuのコマンドライン引数の文字数が、MAX_PATHで制限されているため、256文字を超えるコマンドライン引数部分が文字化けにより渡されない。 ホスト名、ユーザ名、パスワード等を保持する変数は、各々MAX_PATHサイズで変数をとっているが、最終的にszArgment変数にコピーしており、szArgmentも MAX_PATH文字しか取っていないため、バッファーオーバーフローを起こしていると思われる。ただし、別の処理でオーバーした分が上書きされていると思われる。 WindwosXP以降はコマンドラインバッファは8192文字まで対応しているので、szArgment変数は8192分を用意するべきであるし、サイズチェックをするべき。

チケットの履歴 (6 件中 3 件表示)

2020-09-23 13:52 更新者: None
  • 新しいチケット "コマンドライン引数の文字化け" が作成されました
2023-01-10 08:19 更新者: nmaya
  • 優先度9 - 最高 から 5 - 中 に更新されました
2023-01-10 19:33 更新者: nmaya
コメント

8192 の根拠になるのはここ?https://learn.microsoft.com/ja-jp/troubleshoot/windows-client/shell-experience/command-line-string-limitation

修正必要箇所はまだ見ていないが、バッファを増やすだけなら容易?

2023-01-31 21:49 更新者: nmaya
コメント

で対応しました。


WindwosXP以降はコマンドラインバッファは8192文字まで対応しているので、szArgment変数は8192分を用意するべきであるし、

資料によると 8191 文字が上限のようなので、char szArgment[8192] に変更しました。

サイズチェックをするべき。

wsprintf() や _snprintf() を使っているところがあったので _s 付きの関数に変更しました。こういうご指摘だったという理解でいいでしょうか?

2023-01-31 21:49 更新者: nmaya
  • 担当者(未割り当て) から nmaya に更新されました
  • 解決法なし から 修正済み に更新されました
2023-04-26 23:10 更新者: nmaya
  • 状況オープン から 完了 に更新されました

添付ファイルリスト

添付ファイルはありません

編集

ログインしていません。ログインしていない状態では、コメントに記載者の記録が残りません。 » ログインする