svnno****@sourc*****
svnno****@sourc*****
2017年 6月 26日 (月) 19:38:37 JST
Revision: 6824 http://sourceforge.jp/projects/ttssh2/scm/svn/commits/6824 Author: doda Date: 2017-06-26 19:38:37 +0900 (Mon, 26 Jun 2017) Log Message: ----------- ログ出力を強化 Modified Paths: -------------- trunk/ttssh2/ttxssh/ssh.c -------------- next part -------------- Modified: trunk/ttssh2/ttxssh/ssh.c =================================================================== --- trunk/ttssh2/ttxssh/ssh.c 2017-06-26 10:38:26 UTC (rev 6823) +++ trunk/ttssh2/ttxssh/ssh.c 2017-06-26 10:38:37 UTC (rev 6824) @@ -349,10 +349,12 @@ Channel_t *c; if (id < 0 || id >= CHANNEL_MAX) { + logprintf(LOG_LEVEL_VERBOSE, __FUNCTION__ ": invalid channel id. (%d)", id); return (NULL); } c = &channels[id]; if (c->used == 0) { // already freed + logprintf(LOG_LEVEL_VERBOSE, __FUNCTION__ ": channel was already freed. id:%d", id); return (NULL); } return (c); @@ -1068,6 +1070,7 @@ msg = buffer_init(); if (msg == NULL) { // TODO: error check + logputs(LOG_LEVEL_ERROR, __FUNCTION__ ": buffer_init returns NULL."); return; } @@ -2075,6 +2078,8 @@ if (handle_message_count >= HANDLE_MESSAGE_MAX) { // TODO: error check + logprintf(LOG_LEVEL_ERROR, __FUNCTION__ ": too many handlers. handlers:%d, max:%d", + handle_message_count, HANDLE_MESSAGE_MAX); return; } @@ -2766,6 +2771,7 @@ msg = buffer_init(); if (msg == NULL) { // TODO: error check + logputs(LOG_LEVEL_ERROR, __FUNCTION__ ": buffer_init returns NULL."); return; } buffer_put_int(msg, SSH2_DISCONNECT_BY_APPLICATION); @@ -2840,12 +2846,16 @@ Channel_t *c; c = ssh2_channel_lookup(pvar->shell_id); - if (c == NULL) + if (c == NULL) { + logputs(LOG_LEVEL_ERROR, __FUNCTION__ ": shell channel not found."); return; + } + msg = buffer_init(); if (msg == NULL) { // TODO: error check + logputs(LOG_LEVEL_ERROR, __FUNCTION__ ": buffer_init returns NULL."); return; } buffer_put_int(msg, c->remote_id); @@ -2885,11 +2895,14 @@ Channel_t *c; c = ssh2_channel_lookup(pvar->shell_id); - if (c == NULL) + if (c == NULL) { + logputs(LOG_LEVEL_ERROR, __FUNCTION__ ": shell channel not found."); goto error; + } msg = buffer_init(); if (msg == NULL) { + logputs(LOG_LEVEL_ERROR, __FUNCTION__ ": buffer_init returns NULL."); goto error; } buffer_put_int(msg, c->remote_id); @@ -3015,7 +3028,12 @@ } else { // for SSH2(yutaka) Channel_t *c = ssh2_channel_lookup(pvar->shell_id); - SSH2_send_channel_data(pvar, c, (unsigned char *)buf, buflen, 0); + if (c == NULL) { + logputs(LOG_LEVEL_ERROR, __FUNCTION__ ": shell channel not found."); + } + else { + SSH2_send_channel_data(pvar, c, (unsigned char *)buf, buflen, 0); + } } } @@ -3270,6 +3288,8 @@ if (pvar->rekeying) { // TODO: \x97\x9D\x91z\x82Ƃ\xB5\x82Ă̓p\x83P\x83b\x83g\x94j\x8A\xFC\x82ł͂Ȃ\xAD\x81A\x83p\x83P\x83b\x83g\x93ǂݎ\xE6\x82\xE8\x92x\x89\x84\x82ɂ\xB5\x82\xBD\x82\xA2\x82Ƃ\xB1\x82낾\x82\xAA\x81A // \x8F\xAB\x97\x88\x92\xBC\x82\xB7\x82\xB1\x82Ƃɂ\xB7\x82\xE9\x81B + logputs(LOG_LEVEL_INFO, __FUNCTION__ ": now rekeying. data is not sent."); + c = NULL; return; @@ -3298,6 +3318,7 @@ msg = buffer_init(); if (msg == NULL) { // TODO: error check + logputs(LOG_LEVEL_ERROR, __FUNCTION__ ": buffer_init returns NULL."); return; } buffer_put_int(msg, c->remote_id); @@ -3309,9 +3330,9 @@ memcpy(outmsg, buffer_ptr(msg), len); finish_send_packet(pvar); buffer_free(msg); - //debug_print(1, pvar->ssh_state.outbuf, 7 + 4 + 1 + 1 + len); - logprintf(LOG_LEVEL_SSHDUMP, "SSH2_MSG_CHANNEL_DATA was sent at SSH2_send_channel_data(). local:%d remote:%d", c->self_id, c->remote_id); + logprintf(LOG_LEVEL_SSHDUMP, __FUNCTION__ ": sending SSH2_MSG_CHANNEL_DATA. " + "local:%d remote:%d len:%d", c->self_id, c->remote_id, buflen); // remote window size\x82̒\xB2\x90\xAE if (buflen <= c->remote_window) { @@ -3396,6 +3417,7 @@ msg = buffer_init(); if (msg == NULL) { // TODO: error check + logputs(LOG_LEVEL_ERROR, __FUNCTION__ ": buffer_init returns NULL."); return; } buffer_put_int(msg, remote_channel_num); @@ -3425,6 +3447,7 @@ msg = buffer_init(); if (msg == NULL) { // TODO: error check + logputs(LOG_LEVEL_ERROR, __FUNCTION__ ": buffer_init returns NULL."); return; } buffer_put_int(msg, c->remote_id); @@ -3493,6 +3516,8 @@ if (pvar->rekeying) { // TODO: \x97\x9D\x91z\x82Ƃ\xB5\x82Ă̓p\x83P\x83b\x83g\x94j\x8A\xFC\x82ł͂Ȃ\xAD\x81A\x83p\x83P\x83b\x83g\x93ǂݎ\xE6\x82\xE8\x92x\x89\x84\x82ɂ\xB5\x82\xBD\x82\xA2\x82Ƃ\xB1\x82낾\x82\xAA\x81A // \x8F\xAB\x97\x88\x92\xBC\x82\xB7\x82\xB1\x82Ƃɂ\xB7\x82\xE9\x81B + logputs(LOG_LEVEL_INFO, __FUNCTION__ ": now rekeying. data is not sent."); + c = NULL; return; @@ -3501,7 +3526,7 @@ msg = buffer_init(); if (msg == NULL) { // TODO: error check - logputs(LOG_LEVEL_ERROR, __FUNCTION__ ": buffer_init returns NULL"); + logputs(LOG_LEVEL_ERROR, __FUNCTION__ ": buffer_init returns NULL."); return; } buffer_put_int(msg, c->remote_id); // remote ID @@ -3574,7 +3599,7 @@ msg = buffer_init(); if (msg == NULL) { // TODO: error check - logputs(LOG_LEVEL_ERROR, __FUNCTION__ ": buffer_init returns NULL"); + logputs(LOG_LEVEL_ERROR, __FUNCTION__ ": buffer_init returns NULL."); return; } req = "tcpip-forward"; @@ -3607,6 +3632,7 @@ msg = buffer_init(); if (msg == NULL) { // TODO: error check + logputs(LOG_LEVEL_ERROR, __FUNCTION__ ": buffer_init returns NULL."); return; } s = "cancel-tcpip-forward"; @@ -3669,12 +3695,15 @@ msg = buffer_init(); if (msg == NULL) { // TODO: error check + logputs(LOG_LEVEL_ERROR, __FUNCTION__ ": buffer_init returns NULL."); return; } c = ssh2_channel_lookup(pvar->shell_id); - if (c == NULL) + if (c == NULL) { + logputs(LOG_LEVEL_ERROR, __FUNCTION__ ": shell channel not found."); return; + } // making the fake data newlen = 2 * auth_data_len + 1; @@ -3759,6 +3788,8 @@ if (pvar->rekeying) { // TODO: \x97\x9D\x91z\x82Ƃ\xB5\x82Ă̓p\x83P\x83b\x83g\x94j\x8A\xFC\x82ł͂Ȃ\xAD\x81A\x83p\x83P\x83b\x83g\x93ǂݎ\xE6\x82\xE8\x92x\x89\x84\x82ɂ\xB5\x82\xBD\x82\xA2\x82Ƃ\xB1\x82낾\x82\xAA\x81A // \x8F\xAB\x97\x88\x92\xBC\x82\xB7\x82\xB1\x82Ƃɂ\xB7\x82\xE9\x81B + logputs(LOG_LEVEL_INFO, __FUNCTION__ ": now rekeying. channel open request is not sent."); + c = NULL; return; @@ -3779,6 +3810,7 @@ msg = buffer_init(); if (msg == NULL) { // TODO: error check + logputs(LOG_LEVEL_ERROR, __FUNCTION__ ": buffer_init returns NULL."); return; } s = "direct-tcpip"; @@ -4545,6 +4577,7 @@ msg = buffer_init(); if (msg == NULL) { // TODO: error check + logputs(LOG_LEVEL_ERROR, __FUNCTION__ ": buffer_init returns NULL."); return; } if (pvar->my_kex != NULL) @@ -5140,6 +5173,7 @@ msg = buffer_init(); if (msg == NULL) { // TODO: error check + logputs(LOG_LEVEL_ERROR, __FUNCTION__ ": buffer_init returns NULL."); return; } @@ -5425,6 +5459,7 @@ msg = buffer_init(); if (msg == NULL) { // TODO: error check + logputs(LOG_LEVEL_ERROR, __FUNCTION__ ": buffer_init returns NULL."); return; } @@ -6328,6 +6363,7 @@ msg = buffer_init(); if (msg == NULL) { // TODO: error check + logputs(LOG_LEVEL_ERROR, __FUNCTION__ ": buffer_init returns NULL."); return FALSE; } s = "ssh-userauth"; @@ -6396,6 +6432,7 @@ msg = buffer_init(); if (msg == NULL) { // TODO: error check + logputs(LOG_LEVEL_ERROR, __FUNCTION__ ": buffer_init returns NULL."); return FALSE; } @@ -6588,6 +6625,7 @@ msg = buffer_init(); if (msg == NULL) { // TODO: error check + logputs(LOG_LEVEL_ERROR, __FUNCTION__ ": buffer_init returns NULL."); return FALSE; } s = "ssh-heartbeat"; @@ -6753,6 +6791,7 @@ msg = buffer_init(); if (msg == NULL) { // TODO: error check + logputs(LOG_LEVEL_ERROR, __FUNCTION__ ": buffer_init returns NULL."); return FALSE; } s = "session"; @@ -6985,11 +7024,14 @@ num = get_uint32_MSBfirst(data); data += 4; + logprintf(LOG_LEVEL_VERBOSE, __FUNCTION__ ": prompts=%d", num); + ///////// step2 // \x83T\x81[\x83o\x82փp\x83X\x83t\x83\x8C\x81[\x83Y\x82𑗂\xE9 msg = buffer_init(); if (msg == NULL) { // TODO: error check + logputs(LOG_LEVEL_ERROR, __FUNCTION__ ": buffer_init returns NULL."); return FALSE; } buffer_put_int(msg, num); @@ -7010,6 +7052,12 @@ // get boolean echo = data[0]; + data[0] = '\0'; // \x83\x8D\x83O\x8Fo\x97ׁ͂̈A\x88ꎞ\x93I\x82\xC9 NUL Terminate \x82\xB7\x82\xE9 + + logprintf(LOG_LEVEL_VERBOSE, __FUNCTION__ ": prompt[%d]=\"%s\", echo=%d, pass-state=%d", + i, prompt, slen, pvar->keyboard_interactive_password_input); + + data[0] = echo; // \x83\x8D\x83O\x8Fo\x97͂\xF0\x8Ds\x82\xC1\x82\xBD\x82̂ŁA\x8C\xB3\x82̒l\x82ɏ\x91\x82\xAB\x96߂\xB7 data += 1; // keyboard-interactive method (2005.3.12 yutaka) @@ -7037,7 +7085,7 @@ finish_send_packet(pvar); buffer_free(msg); - logputs(LOG_LEVEL_VERBOSE, "SSH2_MSG_USERAUTH_INFO_RESPONSE was sent at handle_SSH2_userauth_inforeq()."); + logputs(LOG_LEVEL_VERBOSE, __FUNCTION__ ": sending SSH2_MSG_USERAUTH_INFO_RESPONSE."); return TRUE; } @@ -7302,6 +7350,7 @@ msg = buffer_init(); if (msg == NULL) { // TODO: error check + logputs(LOG_LEVEL_ERROR, __FUNCTION__ ": buffer_init returns NULL."); return FALSE; } @@ -7390,11 +7439,13 @@ msg = buffer_init(); if (msg == NULL) { // TODO: error check + logputs(LOG_LEVEL_ERROR, __FUNCTION__ ": buffer_init returns NULL. (msg)"); return FALSE; } ttymsg = buffer_init(); if (ttymsg == NULL) { // TODO: error check + logputs(LOG_LEVEL_ERROR, __FUNCTION__ ": buffer_init returns NULL. (ttymsg)"); buffer_free(msg); return FALSE; } @@ -7493,6 +7544,7 @@ c = ssh2_channel_lookup(id); if (c == NULL) { // TODO: + logprintf(LOG_LEVEL_ERROR, __FUNCTION__ ": channel not found. (%d)", id); return FALSE; } @@ -7606,6 +7658,7 @@ c = ssh2_channel_lookup(id); if (c == NULL) { // TODO: SSH2_MSG_DISCONNECT\x82𑗂\xE9 + logprintf(LOG_LEVEL_ERROR, __FUNCTION__ ": channel not found. (%d)", id); return FALSE; } @@ -7752,6 +7805,7 @@ c = ssh2_channel_lookup(pvar->shell_id); if (c == NULL) { // TODO: error check + logputs(LOG_LEVEL_ERROR, __FUNCTION__ ": shell channel not found."); return FALSE; } pvar->agentfwd_enable = TRUE; @@ -7764,6 +7818,7 @@ c = ssh2_channel_lookup(pvar->shell_id); if (c == NULL) { // TODO: error check + logputs(LOG_LEVEL_ERROR, __FUNCTION__ ": shell channel not found."); return FALSE; } @@ -7799,6 +7854,7 @@ c = ssh2_channel_lookup(channel_id); if (c == NULL) { // TODO: error check + logprintf(LOG_LEVEL_ERROR, __FUNCTION__ ": channel not found. (%d)", channel_id); return FALSE; } @@ -7847,6 +7903,7 @@ msg = buffer_init(); if (msg == NULL) { // TODO: error check + logputs(LOG_LEVEL_ERROR, __FUNCTION__ ": buffer_init returns NULL."); return; } buffer_put_int(msg, c->remote_id); @@ -7882,6 +7939,7 @@ msg = buffer_init(); if (msg == NULL) { // TODO: error check + logputs(LOG_LEVEL_ERROR, __FUNCTION__ ": buffer_init returns NULL."); return; } buffer_put_int(msg, c->remote_id); @@ -8548,8 +8606,6 @@ // \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; - //debug_print(80, data, len); - // channel number id = get_uint32_MSBfirst(data); data += 4; @@ -8557,17 +8613,16 @@ c = ssh2_channel_lookup(id); if (c == NULL) { // TODO: + logprintf(LOG_LEVEL_ERROR, __FUNCTION__ ": channel not found. (%d)", id); return FALSE; } - logprintf(LOG_LEVEL_SSHDUMP, "SSH2_MSG_CHANNEL_DATA was received. local:%d remote:%d", c->self_id, c->remote_id); - // string length str_len = get_uint32_MSBfirst(data); data += 4; - // RAW\x83p\x83P\x83b\x83g\x83_\x83\x93\x83v\x82\xF0\x92lj\xC1 (2008.8.15 yutaka) if (LogLevel(pvar, LOG_LEVEL_SSHDUMP)) { + logprintf(LOG_LEVEL_SSHDUMP, "SSH2_MSG_CHANNEL_DATA was received. local:%d remote:%d len:%d", c->self_id, c->remote_id, str_len); init_memdump(); push_memdump("SSH receiving packet", "PKT_recv", (char *)data, str_len); } @@ -8574,11 +8629,14 @@ // \x83o\x83b\x83t\x83@\x83T\x83C\x83Y\x82̃`\x83F\x83b\x83N if (str_len > c->local_maxpacket) { - // TODO: logging + logprintf(LOG_LEVEL_WARNING, __FUNCTION__ ": Data length is larger than local_maxpacket. " + "len:%d local_maxpacket:%d", str_len, c->local_maxpacket); } if (str_len > c->local_window) { // TODO: logging // local window size\x82\xE6\x82\xE8\x91傫\x82ȃp\x83P\x83b\x83g\x82͎̂Ă\xE9 + logprintf(LOG_LEVEL_WARNING, __FUNCTION__ ": Data length is larger than local_window. " + "len:%d local_window:%d", str_len, c->local_window); return FALSE; } @@ -8603,8 +8661,6 @@ } } - //debug_print(200, data, strlen); - // \x83E\x83B\x83\x93\x83h\x83E\x83T\x83C\x83Y\x82̒\xB2\x90\xAE c->local_window -= str_len; @@ -8642,6 +8698,7 @@ c = ssh2_channel_lookup(id); if (c == NULL) { // TODO: + logprintf(LOG_LEVEL_ERROR, __FUNCTION__ ": channel not found. (%d)", id); return FALSE; } @@ -8656,10 +8713,14 @@ // \x83o\x83b\x83t\x83@\x83T\x83C\x83Y\x82̃`\x83F\x83b\x83N if (strlen > c->local_maxpacket) { // TODO: logging + logprintf(LOG_LEVEL_WARNING, __FUNCTION__ ": Data length is larger than local_maxpacket. " + "len:%d local_maxpacket:%d", strlen, c->local_maxpacket); } if (strlen > c->local_window) { // TODO: logging // local window size\x82\xE6\x82\xE8\x91傫\x82ȃp\x83P\x83b\x83g\x82͎̂Ă\xE9 + logprintf(LOG_LEVEL_WARNING, __FUNCTION__ ": Data length is larger than local_window. " + "len:%d local_window:%d", strlen, c->local_window); return FALSE; } @@ -8715,6 +8776,7 @@ c = ssh2_channel_lookup(id); if (c == NULL) { // TODO: + logprintf(LOG_LEVEL_ERROR, __FUNCTION__ ": channel not found. (%d)", id); return FALSE; } @@ -8870,6 +8932,7 @@ msg = buffer_init(); if (msg == NULL) { // TODO: error check + logputs(LOG_LEVEL_ERROR, __FUNCTION__ ": buffer_init returns NULL."); return FALSE; } buffer_put_int(msg, remote_id); @@ -8919,6 +8982,7 @@ c = ssh2_channel_lookup(id); if (c == NULL) { // TODO: + logprintf(LOG_LEVEL_ERROR, __FUNCTION__ ": channel not found. (%d)", id); return FALSE; } @@ -8978,6 +9042,7 @@ c = ssh2_channel_lookup(id); if (c == NULL) { // TODO: + logprintf(LOG_LEVEL_ERROR, __FUNCTION__ ": channel not found. (%d)", id); return FALSE; } @@ -9024,6 +9089,7 @@ msg = buffer_init(); if (msg == NULL) { // TODO: error check + logputs(LOG_LEVEL_ERROR, __FUNCTION__ ": buffer_init returns NULL."); return FALSE; } buffer_put_int(msg, c->remote_id); @@ -9070,6 +9136,7 @@ if (c == NULL) { // channel close\x8C\xE3\x82\xC9adjust message\x82\xAA\x92x\x82\xEA\x82Ă\xE2\x82\xC1\x82Ă\xAD\x82\xE9\x83P\x81[\x83X\x82\xE0\x82\xA0\x82邽\x82߁A // FALSE\x82ł͕Ԃ\xB3\x82Ȃ\xA2\x82悤\x82ɂ\xB7\x82\xE9\x81B(2007.12.26 yutaka) + logprintf(LOG_LEVEL_WARNING, __FUNCTION__ ": channel not found. (%d)", id); return TRUE; }