[ttssh2-commit] [9490] ttssh の TTXSetCommandLine() を Unicode 化

Back to archive index
scmno****@osdn***** scmno****@osdn*****
2021年 10月 23日 (土) 01:10:01 JST


Revision: 9490
          https://osdn.net/projects/ttssh2/scm/svn/commits/9490
Author:   zmatsuo
Date:     2021-10-23 01:10:01 +0900 (Sat, 23 Oct 2021)
Log Message:
-----------
ttssh の TTXSetCommandLine() を Unicode 化

- 警告対応
  - 'INT_PTR' から 'int' への変換です。データが失われる可能性があります。
  - warning: variable 'host' set but not used

Modified Paths:
--------------
    trunk/ttssh2/ttxssh/key.c
    trunk/ttssh2/ttxssh/ttxssh.c

-------------- next part --------------
Modified: trunk/ttssh2/ttxssh/key.c
===================================================================
--- trunk/ttssh2/ttxssh/key.c	2021-10-22 16:09:52 UTC (rev 9489)
+++ trunk/ttssh2/ttxssh/key.c	2021-10-22 16:10:01 UTC (rev 9490)
@@ -335,7 +335,7 @@
 		memset(sigblob, 0, diff);
 		len = modlen;
 	}
-	
+
 	/* sha1 the data */
 	//	nid = (datafellows & SSH_BUG_RSASIGMD5) ? NID_md5 : NID_sha1;
 	nid = NID_sha1;
@@ -447,7 +447,7 @@
 	return ret;
 }
 
-static int ssh_ed25519_verify(Key *key, unsigned char *signature, unsigned int signaturelen, 
+static int ssh_ed25519_verify(Key *key, unsigned char *signature, unsigned int signaturelen,
                               unsigned char *data, unsigned int datalen)
 {
 	buffer_t *b;
@@ -972,7 +972,7 @@
 
 	return retval;
 }
-#undef	FLDBASE	
+#undef	FLDBASE
 #undef	FLDSIZE_Y
 #undef	FLDSIZE_X
 
@@ -1054,7 +1054,7 @@
 			break;
 
 		case KEY_ED25519:
-			/* no need to prealloc */	
+			/* no need to prealloc */
 			break;
 
 		case KEY_UNSPEC:
@@ -1159,7 +1159,7 @@
 			break;
 
 		case KEY_ED25519:
-			/* no need to prealloc */	
+			/* no need to prealloc */
 			break;
 
 		case KEY_UNSPEC:
@@ -1596,7 +1596,7 @@
 		}
 		memcpy(*sigptr, buffer_ptr(msg), len);
 		free(sig);
-		
+
 		break;
 	}
 	case KEY_DSA: // DSA
@@ -1717,7 +1717,7 @@
 
 	case KEY_ED25519:
 		ret = ssh_ed25519_sign(keypair, sigptr, siglen, data, datalen);
-		if (ret != 0) 
+		if (ret != 0)
 			goto error;
 		break;
 
@@ -1853,7 +1853,7 @@
 	char *s;
 	BIGNUM *e, *n, *d, *iqmp, *p, *q;
 	BIGNUM *g, *pub_key, *priv_key;
-	
+
 	s = get_ssh2_hostkey_type_name_from_key(key);
 	buffer_put_cstring(b, s);
 
@@ -2025,7 +2025,7 @@
 		case KEY_ED25519:
 			k->ed25519_pk = buffer_get_string_msg(blob, &pklen);
 			k->ed25519_sk = buffer_get_string_msg(blob, &sklen);
-			if (pklen != ED25519_PK_SZ) 
+			if (pklen != ED25519_PK_SZ)
 				goto error;
 			if (sklen != ED25519_SK_SZ)
 				goto error;
@@ -2040,7 +2040,7 @@
 	switch (k->type) {
 		case KEY_RSA1:
 		case KEY_RSA:
-			if (RSA_blinding_on(k->rsa, NULL) != 1) 
+			if (RSA_blinding_on(k->rsa, NULL) != 1)
 				goto error;
 			break;
 	}
@@ -2261,7 +2261,7 @@
 	size_t i;
 	int buf_len;
 	struct hostkeys_update_ctx *ctx;
-	
+
 	ctx = pvar->hostkey_ctx;
 
 	if (ctx->nkeys > 0) {
@@ -2322,7 +2322,8 @@
 	}
 }
 
-static UINT_PTR CALLBACK hosts_updatekey_dlg_proc(HWND dlg, UINT msg, WPARAM wParam, LPARAM lParam)
+//typedef INT_PTR (CALLBACK* DLGPROC)(HWND, UINT, WPARAM, LPARAM);
+static INT_PTR CALLBACK hosts_updatekey_dlg_proc(HWND dlg, UINT msg, WPARAM wParam, LPARAM lParam)
 {
 	PTInstVar pvar;
 	char buf[1024];
@@ -2341,7 +2342,7 @@
 
 		host = pvar->ssh_state.hostname;
 		ctx = pvar->hostkey_ctx;
-		
+
 		GetDlgItemText(dlg, IDC_HOSTKEY_MESSAGE, uimsg, sizeof(uimsg));
 		UTIL_get_lang_msg("DLG_HOSTKEY_ROTATION_WARNING", pvar, uimsg);
 		_snprintf_s(buf, sizeof(buf), _TRUNCATE,
@@ -2408,11 +2409,7 @@
 static void update_known_hosts(PTInstVar pvar, struct hostkeys_update_ctx *ctx)
 {
 	size_t i;
-	int dlgresult;
-	char *host;
 
-	host = pvar->ssh_state.hostname;
-
 	// "/nosecuritywarning"\x82\xAA\x8Ew\x92肳\x82\xEA\x82Ă\xA2\x82\xE9\x8Fꍇ\x81A\x8DX\x90V\x82͈\xEA\x90؍s\x82\xED\x82Ȃ\xA2\x81B
 	if (pvar->nocheck_known_hosts) {
 		logputs(LOG_LEVEL_VERBOSE, "Hostkey was not updated because `/nosecuritywarning' option was specified.");
@@ -2421,6 +2418,7 @@
 
 	// known_hosts\x83t\x83@\x83C\x83\x8B\x82̍X\x90V\x82\xF0\x8Ds\x82\xA4\x82\xBD\x82߁A\x83\x86\x81[\x83U\x82ɖ₢\x8D\x87\x82킹\x82\xF0\x8Ds\x82\xA4\x81B
 	if (pvar->settings.UpdateHostkeys == SSH_UPDATE_HOSTKEYS_ASK) {
+		INT_PTR dlgresult;
 		HWND cur_active = GetActiveWindow();
 
 		pvar->hostkey_ctx = ctx;

Modified: trunk/ttssh2/ttxssh/ttxssh.c
===================================================================
--- trunk/ttssh2/ttxssh/ttxssh.c	2021-10-22 16:09:52 UTC (rev 9489)
+++ trunk/ttssh2/ttxssh/ttxssh.c	2021-10-22 16:10:01 UTC (rev 9490)
@@ -2216,7 +2216,6 @@
 	HWND hostkeyControl = GetDlgItem(dlg, IDC_SSHHOST_KEY_LIST);
 	HWND macControl = GetDlgItem(dlg, IDC_SSHMAC_LIST);
 	HWND compControl = GetDlgItem(dlg, IDC_SSHCOMP_LIST);
-	HWND hostkeyRotationControl = GetDlgItem(dlg, IDC_HOSTKEY_ROTATION_STATIC);
 	HWND hostkeyRotationControlList = GetDlgItem(dlg, IDC_HOSTKEY_ROTATION_COMBO);
 	int i;
 	int ch;
@@ -4652,17 +4651,16 @@
 	strncpy_s(dst, dst_len, str, _TRUNCATE);
 }
 
-static void PASCAL TTXSetCommandLine(PCHAR cmd, int cmdlen,
-                                         PGetHNRec rec)
+static void PASCAL TTXSetCommandLine(wchar_t *cmd, int cmdlen, PGetHNRec rec)
 {
-	char tmpFile[MAX_PATH];
-	char tmpPath[1024];
-	char *buf;
-	char *p;
+	wchar_t tmpFile[MAX_PATH];
+	wchar_t tmpPath[1024];
+	wchar_t *buf;
+	wchar_t *p;
 	int i;
 
-	GetTempPath(sizeof(tmpPath), tmpPath);
-	GetTempFileName(tmpPath, "TTX", 0, tmpFile);
+	GetTempPathW(_countof(tmpPath), tmpPath);
+	GetTempFileNameW(tmpPath, L"TTX", 0, tmpFile);
 
 	for (i = 0; cmd[i] != ' ' && cmd[i] != 0; i++) {
 	}
@@ -4670,24 +4668,21 @@
 	if (i < cmdlen) {
 		int ssh_enable = -1;
 
-		buf = malloc(cmdlen+1);
-		strncpy_s(buf, cmdlen, cmd + i, _TRUNCATE);
+		buf = malloc(sizeof(wchar_t) * (cmdlen+1));
+		wcsncpy_s(buf, cmdlen, cmd + i, _TRUNCATE);
 		buf[cmdlen] = 0;
 		cmd[i] = 0;
 
-		{
-			wchar_t *tmpFileW = ToWcharA(tmpFile);
-			write_ssh_options(pvar, tmpFileW, &pvar->settings, FALSE);
-			free(tmpFileW);
-		}
+		write_ssh_options(pvar, tmpFile, &pvar->settings, FALSE);
 
-		strncat_s(cmd, cmdlen, " /ssh-consume=", _TRUNCATE);
-		strncat_s(cmd, cmdlen, tmpFile, _TRUNCATE);
+		wcsncat_s(cmd, cmdlen, L" /ssh-consume=", _TRUNCATE);
+		wcsncat_s(cmd, cmdlen, tmpFile, _TRUNCATE);
 
-		strncat_s(cmd, cmdlen, buf, _TRUNCATE);
+		wcsncat_s(cmd, cmdlen, buf, _TRUNCATE);
 
 		// \x83R\x83}\x83\x93\x83h\x83\x89\x83C\x83\x93\x82ł̎w\x92\xE8\x82\xF0\x83`\x83F\x83b\x83N
-		if (p = strstr(buf, " /ssh")) {
+		p = wcsstr(buf, L" /ssh");
+		if (p != NULL) {
 			switch (*(p + 5)) {
 				case '\0':
 				case ' ':
@@ -4696,8 +4691,8 @@
 					ssh_enable = 1;
 			}
 		}
-		else if (strstr(buf, " /nossh") ||
-		         strstr(buf, " /telnet")) {
+		else if (wcsstr(buf, L" /nossh") ||
+		         wcsstr(buf, L" /telnet")) {
 			ssh_enable = 0;
 		}
 
@@ -4705,27 +4700,27 @@
 		// \x8Ew\x92肳\x82ꂽ\x82Ƃ\xAB\x82́A\x83\x89\x83W\x83I\x83{\x83^\x83\x93\x82\xCC SSH \x82\xA8\x82\xE6\x82\xD1 SSH \x83v\x83\x8D\x83g\x83R\x83\x8B\x83o\x81[\x83W\x83\x87\x83\x93\x82\xF0
 		// \x93K\x97p\x82\xB7\x82\xE9\x82̂\xF0\x82\xE2\x82߂\xE9 (2007.11.1 maya)
 		if (pvar->hostdlg_Enabled && ssh_enable == -1) {
-			strncat_s(cmd, cmdlen, " /ssh", _TRUNCATE);
+			wcsncat_s(cmd, cmdlen, L" /ssh", _TRUNCATE);
 
 			// add option of SSH protcol version (2004.10.11 yutaka)
 			if (pvar->settings.ssh_protocol_version == 2) {
-				strncat_s(cmd, cmdlen, " /2", _TRUNCATE);
+				wcsncat_s(cmd, cmdlen, L" /2", _TRUNCATE);
 			} else {
-				strncat_s(cmd, cmdlen, " /1", _TRUNCATE);
+				wcsncat_s(cmd, cmdlen, L" /1", _TRUNCATE);
 			}
 
 		}
 
 		// \x83Z\x83b\x83V\x83\x87\x83\x93\x95\xA1\x90\xBB\x82̏ꍇ\x82́A\x8E\xA9\x93\xAE\x83\x8D\x83O\x83C\x83\x93\x97p\x83p\x83\x89\x83\x81\x81[\x83^\x82\xF0\x95t\x82\xAF\x82\xE9\x81B(2005.4.8 yutaka)
-		if (strstr(buf, "DUPLICATE")) {
+		if (wcsstr(buf, L"DUPLICATE")) {
 			char mark[MAX_PATH];
-			char tmp[MAX_PATH*2];
+			wchar_t tmp[MAX_PATH*2];
 
 			// \x8E\xA9\x93\xAE\x83\x8D\x83O\x83C\x83\x93\x82̏ꍇ\x82͉\xBA\x8BL\x83t\x83\x89\x83O\x82\xAA0\x82̂\xBD\x82߁A\x95K\x97v\x82ȃR\x83}\x83\x93\x83h\x82\xF0\x95t\x89\xC1\x82\xB7\x82\xE9\x81B
 			if (!pvar->hostdlg_Enabled) {
-				_snprintf_s(tmp, sizeof(tmp), _TRUNCATE,
-					" /ssh /%d", pvar->settings.ssh_protocol_version);
-				strncat_s(cmd, cmdlen, tmp, _TRUNCATE);
+				_snwprintf_s(tmp, _countof(tmp), _TRUNCATE,
+							 L" /ssh /%d", pvar->settings.ssh_protocol_version);
+				wcsncat_s(cmd, cmdlen, tmp, _TRUNCATE);
 			}
 
 			// \x83p\x83X\x83\x8F\x81[\x83h\x82\xF0\x8Ao\x82\xA6\x82Ă\xA2\x82\xE9\x8Fꍇ\x82̂݁A\x83R\x83}\x83\x93\x83h\x83\x89\x83C\x83\x93\x82ɓn\x82\xB7\x81B(2006.8.3 yutaka)
@@ -4732,32 +4727,32 @@
 			if (pvar->settings.remember_password &&
 			    pvar->auth_state.cur_cred.method == SSH_AUTH_PASSWORD) {
 				dquote_string(pvar->auth_state.cur_cred.password, mark, sizeof(mark));
-				_snprintf_s(tmp, sizeof(tmp), _TRUNCATE,
-				            " /auth=password /user=%s /passwd=%s", pvar->auth_state.user, mark);
-				strncat_s(cmd, cmdlen, tmp, _TRUNCATE);
+				_snwprintf_s(tmp, _countof(tmp), _TRUNCATE,
+							 L" /auth=password /user=%hs /passwd=%hs", pvar->auth_state.user, mark);
+				wcsncat_s(cmd, cmdlen, tmp, _TRUNCATE);
 
 			} else if (pvar->settings.remember_password &&
 			           pvar->auth_state.cur_cred.method == SSH_AUTH_RSA) {
 				dquote_string(pvar->auth_state.cur_cred.password, mark, sizeof(mark));
-				_snprintf_s(tmp, sizeof(tmp), _TRUNCATE,
-				            " /auth=publickey /user=%s /passwd=%s", pvar->auth_state.user, mark);
-				strncat_s(cmd, cmdlen, tmp, _TRUNCATE);
+				_snwprintf_s(tmp, _countof(tmp), _TRUNCATE,
+							 L" /auth=publickey /user=%hs /passwd=%hs", pvar->auth_state.user, mark);
+				wcsncat_s(cmd, cmdlen, tmp, _TRUNCATE);
 
 				dquote_string(pvar->session_settings.DefaultRSAPrivateKeyFile, mark, sizeof(mark));
-				_snprintf_s(tmp, sizeof(tmp), _TRUNCATE, " /keyfile=%s", mark);
-				strncat_s(cmd, cmdlen, tmp, _TRUNCATE);
+				_snwprintf_s(tmp, _countof(tmp), _TRUNCATE, L" /keyfile=%hs", mark);
+				wcsncat_s(cmd, cmdlen, tmp, _TRUNCATE);
 
 			} else if (pvar->settings.remember_password &&
 			           pvar->auth_state.cur_cred.method == SSH_AUTH_TIS) {
 				dquote_string(pvar->auth_state.cur_cred.password, mark, sizeof(mark));
-				_snprintf_s(tmp, sizeof(tmp), _TRUNCATE,
-				            " /auth=challenge /user=%s /passwd=%s", pvar->auth_state.user, mark);
-				strncat_s(cmd, cmdlen, tmp, _TRUNCATE);
+				_snwprintf_s(tmp, _countof(tmp), _TRUNCATE,
+							 L" /auth=challenge /user=%hs /passwd=%hs", pvar->auth_state.user, mark);
+				wcsncat_s(cmd, cmdlen, tmp, _TRUNCATE);
 
 			} else if (pvar->auth_state.cur_cred.method == SSH_AUTH_PAGEANT) {
-				_snprintf_s(tmp, sizeof(tmp), _TRUNCATE,
-				            " /auth=pageant /user=%s", pvar->auth_state.user);
-				strncat_s(cmd, cmdlen, tmp, _TRUNCATE);
+				_snwprintf_s(tmp, _countof(tmp), _TRUNCATE,
+							 L" /auth=pageant /user=%hs", pvar->auth_state.user);
+				wcsncat_s(cmd, cmdlen, tmp, _TRUNCATE);
 
 			} else {
 				// don't come here


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