[Ttssh2-commit] [7019] パケットハンドラ関数からは pvar- > ssh_state 構造体を直接いじらないようにする

scmno****@osdn***** scmno****@osdn*****
2018年 1月 11日 (木) 22:20:00 JST


Revision: 7019
          http://sourceforge.jp/projects/ttssh2/scm/svn/commits/7019
Author:   doda
Date:     2018-01-11 22:20:00 +0900 (Thu, 11 Jan 2018)
Log Message:
-----------
パケットハンドラ関数からは pvar->ssh_state 構造体を直接いじらないようにする

方針決定の試験実装の為、とりあえず handle_SSH2_kexinit() のみ。

r7014 のコミットログにも書いたが ssh_state.payloadlen と ssh_state.payload
の長さは対応していない。
これは分かりづらいので、ハンドラ関数からは ssh_state 構造体を直接いじらずに
マクロを利用して、残りペイロードへのポインタ / 残りペイロード長を取り出す
ようにする。

Revision Links:
--------------
    http://sourceforge.jp/projects/ttssh2/scm/svn/commits/7014

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

-------------- next part --------------
Modified: trunk/ttssh2/ttxssh/ssh.c
===================================================================
--- trunk/ttssh2/ttxssh/ssh.c	2018-01-11 13:19:57 UTC (rev 7018)
+++ trunk/ttssh2/ttxssh/ssh.c	2018-01-11 13:20:00 UTC (rev 7019)
@@ -133,6 +133,11 @@
 static void ssh2_scp_free_packetlist(Channel_t *c);
 static void get_window_pixel_size(PTInstVar pvar, int *x, int *y);
 
+// \x83}\x83N\x83\x8D
+#define remained_payload(pvar) ((pvar)->ssh_state.payload + payload_current_offset(pvar))
+#define remained_payloadlen(pvar) ((pvar)->ssh_state.payloadlen - (pvar)->ssh_state.payload_grabbed)
+#define payload_current_offset(pvar) ((pvar)->ssh_state.payload_grabbed - 1)
+
 //
 // Global request confirm
 //
@@ -4845,8 +4850,8 @@
 		SSH2_send_kexinit(pvar);
 	}
 
-	data = pvar->ssh_state.payload;
-	len = pvar->ssh_state.payloadlen - 1;
+	data = remained_payload(pvar);
+	len = remained_payloadlen(pvar);
 
 	// KEX \x82̍Ō\xE3\x82\xC5 hash (session-id) \x82\xF0\x8Cv\x8EZ\x82\xB7\x82\xE9\x82̂Ɏg\x82\xA4\x82̂ŕۑ\xB6\x82\xB5\x82Ă\xA8\x82\xAD
 	if (pvar->peer_kex != NULL) {



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