• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Tags
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

Tera Termの個人的な作業用リポジトリ


Commit MetaInfo

Revision509c4e904ccd477e38ec9a174bff485b6119e904 (tree)
Time2022-09-09 18:40:57
AuthorIWAMOTO Kouichi <sue@iwmt...>
CommiterIWAMOTO Kouichi

Log Message

KexKeyLogFile設定をUnicode化した

ただし、現時点ではCP932に無い文字を使っているとセッションの複製時等に
ログが記録されなくなる。この問題は別途対応予定。

あわせて、相対パスで指定時はログ保存フォルダ基準に変更した。

git-svn-id: svn+ssh://svn.osdn.net/svnroot/ttssh2/trunk@10254 f5f01b69-1e22-0410-acbf-894ab4bd6246

Change Summary

Incremental Difference

--- a/ttssh2/ttxssh/ssh.c
+++ b/ttssh2/ttxssh/ssh.c
@@ -654,13 +654,21 @@ void log_kex_key(PTInstVar pvar, const BIGNUM *secret)
654654 int fd, i;
655655 unsigned char buff[4], *cookie;
656656 char *hexstr;
657+ wchar_t *fname;
657658
658659 if (pvar->settings.KexKeyLogging && pvar->settings.KexKeyLogFile[0] != 0) {
659660 hexstr = BN_bn2hex(secret);
660661 if (hexstr == NULL) {
661662 return;
662663 }
663- fd = _open(pvar->settings.KexKeyLogFile,
664+
665+ fname = get_log_dir_relative_nameW(pvar->settings.KexKeyLogFile);
666+ if (fname == NULL) {
667+ OPENSSL_free(hexstr);
668+ return;
669+ }
670+
671+ fd = _wopen(fname,
664672 _O_RDWR | _O_APPEND | _O_CREAT | _O_TEXT,
665673 _S_IREAD | _S_IWRITE);
666674 if (fd >= 0) {
@@ -674,6 +682,7 @@ void log_kex_key(PTInstVar pvar, const BIGNUM *secret)
674682 _write(fd, "\n", 1);
675683 _close(fd);
676684 }
685+ free(fname);
677686 OPENSSL_free(hexstr);
678687 }
679688 #endif
--- a/ttssh2/ttxssh/ttxssh.c
+++ b/ttssh2/ttxssh/ttxssh.c
@@ -374,7 +374,7 @@ static void read_ssh_options(PTInstVar pvar, const wchar_t *fileName)
374374 settings->AuthBanner = GetPrivateProfileInt("TTSSH", "AuthBanner", 1, fileName);
375375
376376 #ifdef _DEBUG
377- read_string_option(fileName, "KexKeyLogFile", "", settings->KexKeyLogFile, sizeof(settings->KexKeyLogFile));
377+ GetPrivateProfileStringW(L"TTSSH", L"KexKeyLogFile", L"", settings->KexKeyLogFile, _countof(settings->KexKeyLogFile), fileName);
378378 if (settings->KexKeyLogFile[0] == 0) {
379379 settings->KexKeyLogging = 0;
380380 }
@@ -519,7 +519,7 @@ static void write_ssh_options(PTInstVar pvar, const wchar_t *fileName,
519519 WritePrivateProfileString("TTSSH", "AuthBanner", buf, fileName);
520520
521521 #ifdef _DEBUG
522- WritePrivateProfileString("TTSSH", "KexKeyLogFile", settings->KexKeyLogFile, fileName);
522+ WritePrivateProfileStringW(L"TTSSH", L"KexKeyLogFile", settings->KexKeyLogFile, fileName);
523523 WritePrivateProfileString("TTSSH", "KexKeyLogging",
524524 settings->KexKeyLogging ? "1" : "0", fileName);
525525 #endif
--- a/ttssh2/ttxssh/ttxssh.h
+++ b/ttssh2/ttxssh/ttxssh.h
@@ -210,7 +210,7 @@ typedef struct _TS_SSH {
210210 int AuthBanner;
211211
212212 BOOL KexKeyLogging;
213- char KexKeyLogFile[1024];
213+ wchar_t KexKeyLogFile[1024];
214214 } TS_SSH;
215215
216216 typedef struct _TInstVar {