[Ttssh2-commit] [6157] 以下の関数が返すポインタが、初期化されていない文字列になり得るのを修正

Back to archive index

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 {



Ttssh2-commit メーリングリストの案内
Back to archive index