[Ttssh2-commit] [6656] メッセージ処理が有効にされていなくても、handler が取得出来た時に handler を実行していた問題を修正

svnno****@sourc***** svnno****@sourc*****
2017年 3月 23日 (木) 21:54:58 JST


Revision: 6656
          http://sourceforge.jp/projects/ttssh2/scm/svn/commits/6656
Author:   doda
Date:     2017-03-23 21:54:58 +0900 (Thu, 23 Mar 2017)
Log Message:
-----------
メッセージ処理が有効にされていなくても、handler が取得出来た時に handler を実行していた問題を修正

ticket:37052 で Unexpected SSH2 message ダイアログの後で ACCESS_VIOLATION で落ちている原因。

1. SSH2_MSG_USERAUTH_INFO_REQUEST 用に handler が登録される
2. SSH2_MSG_USERAUTH_PASSWD_CHANGEREQ 用に handler が登録しようとするが、
   1.とメッセージ番号が重複する為に登録されない。
3. SSH2_MSG_USERAUTH_PASSWD_CHANGEREQ が飛んでくる
4. SSH2_MSG_USERAUTH_INFO_REQUEST は enable にされていないので、
   Unexpected SSH2 message ダイアログを表示する。
5. 有効にされていなくても hadler が取得できてしまった為、handler を実行する。
6. handler では SSH2_MSG_USERAUTH_PASSWD_CHANGEREQ を考慮していない為、
   SSH2_MSG_USERAUTH_PK_OK として扱おうとして data の範囲を踏み越えて処理
   しようとして落ちる。

とりあえず notify_fatal_error した後に return して、handler が実行されないようにした。
handle_SSH2_userauth_inforeq() でも SSH2_MSG_USERAUTH_PASSWD_CHANGEREQ を考慮するようにすべき。

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

-------------- next part --------------
Modified: trunk/ttssh2/ttxssh/ssh.c
===================================================================
--- trunk/ttssh2/ttxssh/ssh.c	2017-03-23 12:54:55 UTC (rev 6655)
+++ trunk/ttssh2/ttxssh/ssh.c	2017-03-23 12:54:58 UTC (rev 6656)
@@ -2153,7 +2153,7 @@
 				_snprintf_s(buf, sizeof(buf), _TRUNCATE,
 					pvar->ts->UIMsg, message, handle_message_stage);
 				notify_fatal_error(pvar, buf, TRUE);
-				// abort
+				return;
 			}
 		}
 



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