| 906 |
|
|
| 907 |
static void add_host_key(PTInstVar pvar) |
static void add_host_key(PTInstVar pvar) |
| 908 |
{ |
{ |
| 909 |
|
char buf[FILENAME_MAX]; |
| 910 |
char FAR *name = pvar->hosts_state.file_names[0]; |
char FAR *name = pvar->hosts_state.file_names[0]; |
| 911 |
|
get_teraterm_dir_relative_name(buf, sizeof(buf), name); |
| 912 |
|
|
| 913 |
if (name == NULL || name[0] == 0) { |
if (buf == NULL || buf[0] == 0) { |
| 914 |
notify_nonfatal_error(pvar, |
notify_nonfatal_error(pvar, |
| 915 |
"The host and its key cannot be added, because no known-hosts file has been specified.\n" |
"The host and its key cannot be added, because no known-hosts file has been specified.\n" |
| 916 |
"Restart Teraterm and specify a read/write known-hosts file in the TTSSH Setup dialog box."); |
"Restart Teraterm and specify a read/write known-hosts file in the TTSSH Setup dialog box."); |
| 918 |
char FAR *keydata = format_host_key(pvar); |
char FAR *keydata = format_host_key(pvar); |
| 919 |
int length = strlen(keydata); |
int length = strlen(keydata); |
| 920 |
int fd = |
int fd = |
| 921 |
_open(name, |
_open(buf, |
| 922 |
_O_APPEND | _O_CREAT | _O_WRONLY | _O_SEQUENTIAL | |
_O_APPEND | _O_CREAT | _O_WRONLY | _O_SEQUENTIAL | |
| 923 |
_O_BINARY, |
_O_BINARY, |
| 924 |
_S_IREAD | _S_IWRITE); |
_S_IREAD | _S_IWRITE); |
| 968 |
// |
// |
| 969 |
static void delete_different_key(PTInstVar pvar) |
static void delete_different_key(PTInstVar pvar) |
| 970 |
{ |
{ |
| 971 |
|
char buf[FILENAME_MAX]; |
| 972 |
char FAR *name = pvar->hosts_state.file_names[0]; |
char FAR *name = pvar->hosts_state.file_names[0]; |
| 973 |
|
get_teraterm_dir_relative_name(buf, sizeof(buf), name); |
| 974 |
|
|
| 975 |
if (name == NULL || name[0] == 0) { |
if (buf == NULL || buf[0] == 0) { |
| 976 |
notify_nonfatal_error(pvar, |
notify_nonfatal_error(pvar, |
| 977 |
"The host and its key cannot be added, because no known-hosts file has been specified.\n" |
"The host and its key cannot be added, because no known-hosts file has been specified.\n" |
| 978 |
"Restart Teraterm and specify a read/write known-hosts file in the TTSSH Setup dialog box."); |
"Restart Teraterm and specify a read/write known-hosts file in the TTSSH Setup dialog box."); |
| 979 |
} |
} |
| 980 |
else { |
else { |
| 981 |
Key key; // 接続中のホストのキー |
Key key; // 接続中のホストのキー |
| 982 |
int length = strlen(name); |
int length; |
| 983 |
char filename[L_tmpnam]; |
char filename[L_tmpnam]; |
| 984 |
int fd; |
int fd; |
| 985 |
int amount_written = 0; |
int amount_written = 0; |
| 1127 |
} |
} |
| 1128 |
|
|
| 1129 |
// 書き込み一時ファイルからリネーム |
// 書き込み一時ファイルからリネーム |
| 1130 |
_unlink(pvar->hosts_state.file_names[0]); |
_unlink(buf); |
| 1131 |
rename(filename, pvar->hosts_state.file_names[0]); |
rename(filename, buf); |
| 1132 |
|
|
| 1133 |
error2: |
error2: |
| 1134 |
_unlink(filename); |
_unlink(filename); |
| 1384 |
|
|
| 1385 |
/* |
/* |
| 1386 |
* $Log: not supported by cvs2svn $ |
* $Log: not supported by cvs2svn $ |
| 1387 |
|
* Revision 1.7 2006/04/04 13:52:52 yutakakn |
| 1388 |
|
* known_hostsファイルにおいてキー種別の異なる同一ホストのエントリがあった場合、古いキーを削除する機能を追加した。 |
| 1389 |
|
* |
| 1390 |
* Revision 1.6 2006/03/29 14:56:52 yutakakn |
* Revision 1.6 2006/03/29 14:56:52 yutakakn |
| 1391 |
* known_hostsファイルにキー種別の異なる同一ホストのエントリがあると、アプリケーションエラーとなるバグを修正した。 |
* known_hostsファイルにキー種別の異なる同一ホストのエントリがあると、アプリケーションエラーとなるバグを修正した。 |
| 1392 |
* |
* |