Tera Termの個人的な作業用リポジトリ
Revision | 509c4e904ccd477e38ec9a174bff485b6119e904 (tree) |
---|---|
Time | 2022-09-09 18:40:57 |
Author | IWAMOTO Kouichi <sue@iwmt...> |
Commiter | IWAMOTO Kouichi |
KexKeyLogFile設定をUnicode化した
ただし、現時点ではCP932に無い文字を使っているとセッションの複製時等に
ログが記録されなくなる。この問題は別途対応予定。
あわせて、相対パスで指定時はログ保存フォルダ基準に変更した。
git-svn-id: svn+ssh://svn.osdn.net/svnroot/ttssh2/trunk@10254 f5f01b69-1e22-0410-acbf-894ab4bd6246
@@ -654,13 +654,21 @@ void log_kex_key(PTInstVar pvar, const BIGNUM *secret) | ||
654 | 654 | int fd, i; |
655 | 655 | unsigned char buff[4], *cookie; |
656 | 656 | char *hexstr; |
657 | + wchar_t *fname; | |
657 | 658 | |
658 | 659 | if (pvar->settings.KexKeyLogging && pvar->settings.KexKeyLogFile[0] != 0) { |
659 | 660 | hexstr = BN_bn2hex(secret); |
660 | 661 | if (hexstr == NULL) { |
661 | 662 | return; |
662 | 663 | } |
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, | |
664 | 672 | _O_RDWR | _O_APPEND | _O_CREAT | _O_TEXT, |
665 | 673 | _S_IREAD | _S_IWRITE); |
666 | 674 | if (fd >= 0) { |
@@ -674,6 +682,7 @@ void log_kex_key(PTInstVar pvar, const BIGNUM *secret) | ||
674 | 682 | _write(fd, "\n", 1); |
675 | 683 | _close(fd); |
676 | 684 | } |
685 | + free(fname); | |
677 | 686 | OPENSSL_free(hexstr); |
678 | 687 | } |
679 | 688 | #endif |
@@ -374,7 +374,7 @@ static void read_ssh_options(PTInstVar pvar, const wchar_t *fileName) | ||
374 | 374 | settings->AuthBanner = GetPrivateProfileInt("TTSSH", "AuthBanner", 1, fileName); |
375 | 375 | |
376 | 376 | #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); | |
378 | 378 | if (settings->KexKeyLogFile[0] == 0) { |
379 | 379 | settings->KexKeyLogging = 0; |
380 | 380 | } |
@@ -519,7 +519,7 @@ static void write_ssh_options(PTInstVar pvar, const wchar_t *fileName, | ||
519 | 519 | WritePrivateProfileString("TTSSH", "AuthBanner", buf, fileName); |
520 | 520 | |
521 | 521 | #ifdef _DEBUG |
522 | - WritePrivateProfileString("TTSSH", "KexKeyLogFile", settings->KexKeyLogFile, fileName); | |
522 | + WritePrivateProfileStringW(L"TTSSH", L"KexKeyLogFile", settings->KexKeyLogFile, fileName); | |
523 | 523 | WritePrivateProfileString("TTSSH", "KexKeyLogging", |
524 | 524 | settings->KexKeyLogging ? "1" : "0", fileName); |
525 | 525 | #endif |
@@ -210,7 +210,7 @@ typedef struct _TS_SSH { | ||
210 | 210 | int AuthBanner; |
211 | 211 | |
212 | 212 | BOOL KexKeyLogging; |
213 | - char KexKeyLogFile[1024]; | |
213 | + wchar_t KexKeyLogFile[1024]; | |
214 | 214 | } TS_SSH; |
215 | 215 | |
216 | 216 | typedef struct _TInstVar { |