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; } }