svnno****@sourc*****
svnno****@sourc*****
2015年 11月 19日 (木) 17:35:26 JST
Revision: 6157 http://sourceforge.jp/projects/ttssh2/scm/svn/commits/6157 Author: maya Date: 2015-11-19 17:35:26 +0900 (Thu, 19 Nov 2015) Log Message: ----------- 以下の関数が返すポインタが、初期化されていない文字列になり得るのを修正 get_digest_algorithm_name() get_ssh2_comp_name() get_ssh2_mac_name() get_kex_algorithm_name() get_cipher_string() Modified Paths: -------------- trunk/ttssh2/ttxssh/ssh.c trunk/ttssh2/ttxssh/ssh.h -------------- next part -------------- Modified: trunk/ttssh2/ttxssh/ssh.c =================================================================== --- trunk/ttssh2/ttxssh/ssh.c 2015-11-19 06:09:40 UTC (rev 6156) +++ trunk/ttssh2/ttxssh/ssh.c 2015-11-19 08:35:26 UTC (rev 6157) @@ -4145,16 +4145,16 @@ static char * get_cipher_string(SSHCipher cipher) { ssh2_cipher_t *ptr = ssh2_ciphers; - static char buf[32]; + char *p = "unknown"; while (ptr->name != NULL) { if (cipher == ptr->cipher) { - strncpy_s(buf, sizeof(buf), ptr->name, _TRUNCATE); + p = ptr->name; break; } ptr++; } - return buf; + return p; } const EVP_CIPHER* get_cipher_EVP_CIPHER(SSHCipher cipher) @@ -4177,16 +4177,16 @@ char* get_kex_algorithm_name(kex_algorithm kextype) { ssh2_kex_algorithm_t *ptr = ssh2_kex_algorithms; - static char buf[64]; + char *p = "unknown"; while (ptr->name != NULL) { if (kextype == ptr->kextype) { - strncpy_s(buf, sizeof(buf), ptr->name, _TRUNCATE); + p = ptr->name; break; } ptr++; } - return buf; + return p; } const EVP_MD* get_kex_algorithm_EVP_MD(kex_algorithm kextype) @@ -4207,16 +4207,16 @@ char* get_ssh2_mac_name(hmac_type type) { ssh2_mac_t *ptr = ssh2_macs; - static char buf[64]; + char *p = "unknown"; while (ptr->name != NULL) { if (type == ptr->type) { - strncpy_s(buf, sizeof(buf), ptr->name, _TRUNCATE); + p = ptr->name; break; } ptr++; } - return buf; + return p; } const EVP_MD* get_ssh2_mac_EVP_MD(hmac_type type) @@ -4252,16 +4252,16 @@ char* get_ssh2_comp_name(compression_type type) { ssh2_comp_t *ptr = ssh2_comps; - static char buf[32]; + char *p = "unknown"; while (ptr->name != NULL) { if (type == ptr->type) { - strncpy_s(buf, sizeof(buf), ptr->name, _TRUNCATE); + p = ptr->name; break; } ptr++; } - return buf; + return p; } char* get_ssh_keytype_name(ssh_keytype type) @@ -4283,16 +4283,16 @@ char* get_digest_algorithm_name(digest_algorithm id) { ssh_digest_t *ptr = ssh_digests; - static char buf[16]; + char *p = "unknown"; while (ptr->name != NULL) { if (id == ptr->id) { - strncpy_s(buf, sizeof(buf), ptr->name, _TRUNCATE); + p = ptr->name; break; } ptr++; } - return buf; + return p; } static void do_write_buffer_file(void *buf, int len, char *file, int lineno) Modified: trunk/ttssh2/ttxssh/ssh.h =================================================================== --- trunk/ttssh2/ttxssh/ssh.h 2015-11-19 06:09:40 UTC (rev 6156) +++ trunk/ttssh2/ttxssh/ssh.h 2015-11-19 08:35:26 UTC (rev 6157) @@ -554,18 +554,18 @@ typedef struct ssh_digest { digest_algorithm id; - const char *name; + char *name; } ssh_digest_t; /* NB. Indexed directly by algorithm number */ static ssh_digest_t ssh_digests[] = { - { SSH_DIGEST_MD5, "MD5" }, - { SSH_DIGEST_RIPEMD160, "RIPEMD160" }, - { SSH_DIGEST_SHA1, "SHA1" }, - { SSH_DIGEST_SHA256, "SHA256" }, - { SSH_DIGEST_SHA384, "SHA384" }, - { SSH_DIGEST_SHA512, "SHA512" }, - { SSH_DIGEST_MAX, NULL }, + { SSH_DIGEST_MD5, "MD5" }, + { SSH_DIGEST_RIPEMD160, "RIPEMD160" }, + { SSH_DIGEST_SHA1, "SHA1" }, + { SSH_DIGEST_SHA256, "SHA256" }, + { SSH_DIGEST_SHA384, "SHA384" }, + { SSH_DIGEST_SHA512, "SHA512" }, + { SSH_DIGEST_MAX, NULL }, }; enum scp_dir {