| 1714 |
} |
} |
| 1715 |
} |
} |
| 1716 |
|
|
| 1717 |
|
void server_version_check(PTInstVar pvar) |
| 1718 |
|
{ |
| 1719 |
|
char *server_swver; |
| 1720 |
|
|
| 1721 |
|
pvar->server_compat_flag = 0; |
| 1722 |
|
|
| 1723 |
|
if ((server_swver = strchr(pvar->server_version_string+4, '-')) == NULL) { |
| 1724 |
|
notify_verbose_message(pvar, "Can't get server software version string.", LOG_LEVEL_WARNING); |
| 1725 |
|
return; |
| 1726 |
|
} |
| 1727 |
|
server_swver++; |
| 1728 |
|
|
| 1729 |
|
if (strncmp(server_swver, "Cisco-1", 7) == 0) { |
| 1730 |
|
pvar->server_compat_flag |= SSH_BUG_DHGEX_LARGE; |
| 1731 |
|
notify_verbose_message(pvar, "Server version string is matched to \"Cisco-1\", compatibility flag SSH_BUG_DHGEX_LARGE is enabled.", LOG_LEVEL_INFO); |
| 1732 |
|
} |
| 1733 |
|
} |
| 1734 |
|
|
| 1735 |
BOOL SSH_handle_server_ID(PTInstVar pvar, char FAR * ID, int ID_len) |
BOOL SSH_handle_server_ID(PTInstVar pvar, char FAR * ID, int ID_len) |
| 1736 |
{ |
{ |
| 1737 |
static char prefix[64]; |
static char prefix[64]; |
| 1757 |
notify_verbose_message(pvar, buf, LOG_LEVEL_VERBOSE); |
notify_verbose_message(pvar, buf, LOG_LEVEL_VERBOSE); |
| 1758 |
free(buf); |
free(buf); |
| 1759 |
|
|
|
|
|
|
// ここでのコピーは削除 (2005.3.9 yutaka) |
|
|
#if 0 |
|
|
// for calculate SSH2 hash |
|
|
// サーババージョンの保存(改行は取り除くこと) |
|
|
if (ID_len >= sizeof(pvar->server_version_string)) |
|
|
return FALSE; |
|
|
strncpy(pvar->server_version_string, ID, ID_len); |
|
|
#endif |
|
|
|
|
|
|
|
| 1760 |
if (ID[ID_len - 1] != '\n') { |
if (ID[ID_len - 1] != '\n') { |
| 1761 |
pvar->ssh_state.status_flags |= STATUS_IN_PARTIAL_ID_STRING; |
pvar->ssh_state.status_flags |= STATUS_IN_PARTIAL_ID_STRING; |
| 1762 |
return FALSE; |
return FALSE; |
| 1818 |
sizeof(pvar->server_version_string), _TRUNCATE, |
sizeof(pvar->server_version_string), _TRUNCATE, |
| 1819 |
"%s", pvar->ssh_state.server_ID); |
"%s", pvar->ssh_state.server_ID); |
| 1820 |
|
|
| 1821 |
|
// サーババージョンのチェック |
| 1822 |
|
server_version_check(pvar); |
| 1823 |
|
|
| 1824 |
if ((pvar->Psend) (pvar->socket, TTSSH_ID, TTSSH_ID_len, |
if ((pvar->Psend) (pvar->socket, TTSSH_ID, TTSSH_ID_len, |
| 1825 |
0) != TTSSH_ID_len) { |
0) != TTSSH_ID_len) { |
| 1826 |
UTIL_get_lang_msg("MSG_SSH_SEND_ID_ERROR", pvar, |
UTIL_get_lang_msg("MSG_SSH_SEND_ID_ERROR", pvar, |
| 5227 |
else if (bits > max) { |
else if (bits > max) { |
| 5228 |
bits = max; |
bits = max; |
| 5229 |
} |
} |
| 5230 |
|
if (pvar->server_compat_flag & SSH_BUG_DHGEX_LARGE && bits > 4096) { |
| 5231 |
|
unsigned char tmp[256]; |
| 5232 |
|
_snprintf_s(tmp, sizeof(tmp), _TRUNCATE, |
| 5233 |
|
"SSH_BUG_DHGEX_LARGE is enabled. DH-GEX group size is limited to 4096. (Original size is %d)", |
| 5234 |
|
bits); |
| 5235 |
|
notify_verbose_message(pvar, tmp, LOG_LEVEL_NOTIFY); |
| 5236 |
|
bits = 4096; |
| 5237 |
|
} |
| 5238 |
|
|
| 5239 |
// サーバへgroup sizeを送って、p と g を作ってもらう。 |
// サーバへgroup sizeを送って、p と g を作ってもらう。 |
| 5240 |
buffer_put_int(msg, min); |
buffer_put_int(msg, min); |