[Ttssh2-commit] [7014] SSH Dump Log への出力で、末尾にゴミ ( NUL バイト ) が付加するのを修正

scmno****@osdn***** scmno****@osdn*****
2018年 1月 9日 (火) 18:06:11 JST


Revision: 7014
          http://sourceforge.jp/projects/ttssh2/scm/svn/commits/7014
Author:   doda
Date:     2018-01-09 18:06:11 +0900 (Tue, 09 Jan 2018)
Log Message:
-----------
SSH Dump Log への出力で、末尾にゴミ(NUL バイト)が付加するのを修正

pvar->ssh_state.payload はメッセージタイプを除いたペイロードの先頭を指すが、
pvar->ssh_state.payloadlen はメッセージタイプ分の 1 バイトを含めた長さ。
ペイロード部分の長さは payloadlen から 1 を引かなければいけない。

payload の長さと payloadlen が対応していないのは分かりづらくミスの元なので
対処を考える必要あり。

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

-------------- next part --------------
Modified: trunk/ttssh2/ttxssh/ssh.c
===================================================================
--- trunk/ttssh2/ttxssh/ssh.c	2018-01-09 09:06:08 UTC (rev 7013)
+++ trunk/ttssh2/ttxssh/ssh.c	2018-01-09 09:06:11 UTC (rev 7014)
@@ -4864,12 +4864,6 @@
 
 	// TODO: buffer overrun check
 
-	// 6byte\x81i\x83T\x83C\x83Y\x81{\x83p\x83f\x83B\x83\x93\x83O\x81{\x83^\x83C\x83v\x81j\x82\xF0\x8E\xE6\x82菜\x82\xA2\x82\xBD\x88ȍ~\x82̃y\x83C\x83\x8D\x81[\x83h
-	data = pvar->ssh_state.payload;
-	// \x83p\x83P\x83b\x83g\x83T\x83C\x83Y - (\x83p\x83f\x83B\x83\x93\x83O+1)\x81G\x90^\x82̃p\x83P\x83b\x83g\x83T\x83C\x83Y
-	len = pvar->ssh_state.payloadlen;
-
-	//write_buffer_file(data, len);
 	push_memdump("KEXINIT", "exchange algorithm list: receiving", data, len);
 
 	if (offset + 20 >= len) {
@@ -5610,10 +5604,10 @@
 
 	// TODO: buffer overrun check
 
-	// 6byte\x81i\x83T\x83C\x83Y\x81{\x83p\x83f\x83B\x83\x93\x83O\x81{\x83^\x83C\x83v\x81j\x82\xF0\x8E\xE6\x82菜\x82\xA2\x82\xBD\x88ȍ~\x82̃y\x83C\x83\x8D\x81[\x83h
+	// \x83\x81\x83b\x83Z\x81[\x83W\x83^\x83C\x83v\x82̌\xE3\x82ɑ\xB1\x82\xAD\x83y\x83C\x83\x8D\x81[\x83h\x82̐擪
 	data = pvar->ssh_state.payload;
-	// \x83p\x83P\x83b\x83g\x83T\x83C\x83Y - (\x83p\x83f\x83B\x83\x93\x83O\x83T\x83C\x83Y+1)\x81G\x90^\x82̃p\x83P\x83b\x83g\x83T\x83C\x83Y
-	len = pvar->ssh_state.payloadlen;
+	// \x83y\x83C\x83\x8D\x81[\x83h\x82̒\xB7\x82\xB3; \x83\x81\x83b\x83Z\x81[\x83W\x83^\x83C\x83v\x95\xAA\x82\xCC 1 \x83o\x83C\x83g\x82\xF0\x8C\xB8\x82炷
+	len = pvar->ssh_state.payloadlen - 1;
 
 	// for debug
 	push_memdump("KEXDH_REPLY", "key exchange: receiving", data, len);
@@ -5753,10 +5747,10 @@
 
 	// TODO: buffer overrun check
 
-	// 6byte\x81i\x83T\x83C\x83Y\x81{\x83p\x83f\x83B\x83\x93\x83O\x81{\x83^\x83C\x83v\x81j\x82\xF0\x8E\xE6\x82菜\x82\xA2\x82\xBD\x88ȍ~\x82̃y\x83C\x83\x8D\x81[\x83h
+	// \x83\x81\x83b\x83Z\x81[\x83W\x83^\x83C\x83v\x82̌\xE3\x82ɑ\xB1\x82\xAD\x83y\x83C\x83\x8D\x81[\x83h\x82̐擪
 	data = pvar->ssh_state.payload;
-	// \x83p\x83P\x83b\x83g\x83T\x83C\x83Y - (\x83p\x83f\x83B\x83\x93\x83O\x83T\x83C\x83Y+1)\x81G\x90^\x82̃p\x83P\x83b\x83g\x83T\x83C\x83Y
-	len = pvar->ssh_state.payloadlen;
+	// \x83y\x83C\x83\x8D\x81[\x83h\x82̒\xB7\x82\xB3; \x83\x81\x83b\x83Z\x81[\x83W\x83^\x83C\x83v\x95\xAA\x82\xCC 1 \x83o\x83C\x83g\x82\xF0\x8C\xB8\x82炷
+	len = pvar->ssh_state.payloadlen - 1;
 
 	// for debug
 	push_memdump("DH_GEX_REPLY", "key exchange: receiving", data, len);
@@ -5902,10 +5896,10 @@
 
 	// TODO: buffer overrun check
 
-	// 6byte\x81i\x83T\x83C\x83Y\x81{\x83p\x83f\x83B\x83\x93\x83O\x81{\x83^\x83C\x83v\x81j\x82\xF0\x8E\xE6\x82菜\x82\xA2\x82\xBD\x88ȍ~\x82̃y\x83C\x83\x8D\x81[\x83h
+	// \x83\x81\x83b\x83Z\x81[\x83W\x83^\x83C\x83v\x82̌\xE3\x82ɑ\xB1\x82\xAD\x83y\x83C\x83\x8D\x81[\x83h\x82̐擪
 	data = pvar->ssh_state.payload;
-	// \x83p\x83P\x83b\x83g\x83T\x83C\x83Y - (\x83p\x83f\x83B\x83\x93\x83O\x83T\x83C\x83Y+1)\x81G\x90^\x82̃p\x83P\x83b\x83g\x83T\x83C\x83Y
-	len = pvar->ssh_state.payloadlen;
+	// \x83y\x83C\x83\x8D\x81[\x83h\x82̒\xB7\x82\xB3; \x83\x81\x83b\x83Z\x81[\x83W\x83^\x83C\x83v\x95\xAA\x82\xCC 1 \x83o\x83C\x83g\x82\xF0\x8C\xB8\x82炷
+	len = pvar->ssh_state.payloadlen - 1;
 
 	// for debug
 	push_memdump("KEX_ECDH_REPLY", "key exchange: receiving", data, len);
@@ -7528,15 +7522,15 @@
 	logputs(LOG_LEVEL_VERBOSE, "SSH2_MSG_GLOBAL_REQUEST was received.");
 
 	// SSH2 packet format:
-	// [size(4) + padding size(1) + type(1)] + [payload(N) + padding(X)]
-	//  header                                     body
-	//                                         ^data
-	//            <-----------------size------------------------------->
-	//                              <---------len-------->
+	// size(4) + padding size(1) + type(1) + payload(N) + padding(X)
+	//                                       ^data
+	//           <-----------------size---------------------------->
+	//                             <--------len------->
 	//
-	// data = payload(N) + padding(X): \x83p\x83f\x83B\x83\x93\x83O\x82\xE0\x8A܂߂\xBD\x83{\x83f\x83B\x82\xB7\x82ׂĂ\xF0\x8Ew\x82\xB7\x81B
+	// data: \x83\x81\x83b\x83Z\x81[\x83W\x83^\x83C\x83v\x82ɑ\xB1\x82\xAD\x83y\x83C\x83\x8D\x81[\x83h\x82̐擪\x82\xF0\x8Ew\x82\xB7\x83|\x83C\x83\x93\x83^
 	data = pvar->ssh_state.payload;
-	// len = size - (padding size + 1): \x83p\x83f\x83B\x83\x93\x83O\x82\xF0\x8F\x9C\x82\xAD\x83{\x83f\x83B\x81Btype\x82\xAA\x90擪\x82Ɋ܂܂\xEA\x82\xE9\x81B
+	// len = size - (padding size + sizeof(padding size)) = sizeof(type) + sizeof(payload):
+	// \x83y\x83C\x83\x8D\x81[\x83h\x95\x94\x95\xAA\x82̒\xB7\x82\xB3\x81Btype \x95\xAA\x82\xE0\x8A܂\xDE
 	len = pvar->ssh_state.payloadlen;
 
 	len--;   // type \x95\xAA\x82\xF0\x8F\x9C\x82\xAD



Ttssh2-commit メーリングリストの案内