| 4864 |
|
|
| 4865 |
// TODO: buffer overrun check |
// TODO: buffer overrun check |
| 4866 |
|
|
|
// 6byte(サイズ+パディング+タイプ)を取り除いた以降のペイロード |
|
|
data = pvar->ssh_state.payload; |
|
|
// パケットサイズ - (パディング+1);真のパケットサイズ |
|
|
len = pvar->ssh_state.payloadlen; |
|
|
|
|
|
//write_buffer_file(data, len); |
|
| 4867 |
push_memdump("KEXINIT", "exchange algorithm list: receiving", data, len); |
push_memdump("KEXINIT", "exchange algorithm list: receiving", data, len); |
| 4868 |
|
|
| 4869 |
if (offset + 20 >= len) { |
if (offset + 20 >= len) { |
| 5604 |
|
|
| 5605 |
// TODO: buffer overrun check |
// TODO: buffer overrun check |
| 5606 |
|
|
| 5607 |
// 6byte(サイズ+パディング+タイプ)を取り除いた以降のペイロード |
// メッセージタイプの後に続くペイロードの先頭 |
| 5608 |
data = pvar->ssh_state.payload; |
data = pvar->ssh_state.payload; |
| 5609 |
// パケットサイズ - (パディングサイズ+1);真のパケットサイズ |
// ペイロードの長さ; メッセージタイプ分の 1 バイトを減らす |
| 5610 |
len = pvar->ssh_state.payloadlen; |
len = pvar->ssh_state.payloadlen - 1; |
| 5611 |
|
|
| 5612 |
// for debug |
// for debug |
| 5613 |
push_memdump("KEXDH_REPLY", "key exchange: receiving", data, len); |
push_memdump("KEXDH_REPLY", "key exchange: receiving", data, len); |
| 5747 |
|
|
| 5748 |
// TODO: buffer overrun check |
// TODO: buffer overrun check |
| 5749 |
|
|
| 5750 |
// 6byte(サイズ+パディング+タイプ)を取り除いた以降のペイロード |
// メッセージタイプの後に続くペイロードの先頭 |
| 5751 |
data = pvar->ssh_state.payload; |
data = pvar->ssh_state.payload; |
| 5752 |
// パケットサイズ - (パディングサイズ+1);真のパケットサイズ |
// ペイロードの長さ; メッセージタイプ分の 1 バイトを減らす |
| 5753 |
len = pvar->ssh_state.payloadlen; |
len = pvar->ssh_state.payloadlen - 1; |
| 5754 |
|
|
| 5755 |
// for debug |
// for debug |
| 5756 |
push_memdump("DH_GEX_REPLY", "key exchange: receiving", data, len); |
push_memdump("DH_GEX_REPLY", "key exchange: receiving", data, len); |
| 5896 |
|
|
| 5897 |
// TODO: buffer overrun check |
// TODO: buffer overrun check |
| 5898 |
|
|
| 5899 |
// 6byte(サイズ+パディング+タイプ)を取り除いた以降のペイロード |
// メッセージタイプの後に続くペイロードの先頭 |
| 5900 |
data = pvar->ssh_state.payload; |
data = pvar->ssh_state.payload; |
| 5901 |
// パケットサイズ - (パディングサイズ+1);真のパケットサイズ |
// ペイロードの長さ; メッセージタイプ分の 1 バイトを減らす |
| 5902 |
len = pvar->ssh_state.payloadlen; |
len = pvar->ssh_state.payloadlen - 1; |
| 5903 |
|
|
| 5904 |
// for debug |
// for debug |
| 5905 |
push_memdump("KEX_ECDH_REPLY", "key exchange: receiving", data, len); |
push_memdump("KEX_ECDH_REPLY", "key exchange: receiving", data, len); |
| 7522 |
logputs(LOG_LEVEL_VERBOSE, "SSH2_MSG_GLOBAL_REQUEST was received."); |
logputs(LOG_LEVEL_VERBOSE, "SSH2_MSG_GLOBAL_REQUEST was received."); |
| 7523 |
|
|
| 7524 |
// SSH2 packet format: |
// SSH2 packet format: |
| 7525 |
// [size(4) + padding size(1) + type(1)] + [payload(N) + padding(X)] |
// size(4) + padding size(1) + type(1) + payload(N) + padding(X) |
| 7526 |
// header body |
// ^data |
| 7527 |
// ^data |
// <-----------------size----------------------------> |
| 7528 |
// <-----------------size-------------------------------> |
// <--------len-------> |
|
// <---------len--------> |
|
| 7529 |
// |
// |
| 7530 |
// data = payload(N) + padding(X): パディングも含めたボディすべてを指す。 |
// data: メッセージタイプに続くペイロードの先頭を指すポインタ |
| 7531 |
data = pvar->ssh_state.payload; |
data = pvar->ssh_state.payload; |
| 7532 |
// len = size - (padding size + 1): パディングを除くボディ。typeが先頭に含まれる。 |
// len = size - (padding size + sizeof(padding size)) = sizeof(type) + sizeof(payload): |
| 7533 |
|
// ペイロード部分の長さ。type 分も含む |
| 7534 |
len = pvar->ssh_state.payloadlen; |
len = pvar->ssh_state.payloadlen; |
| 7535 |
|
|
| 7536 |
len--; // type 分を除く |
len--; // type 分を除く |