version 1.377, 2017/12/05 01:30:19 |
version 1.378, 2018/01/23 05:27:21 |
|
|
SSH_CHANNEL_OPENING, newsock, newsock, -1, |
SSH_CHANNEL_OPENING, newsock, newsock, -1, |
c->local_window_max, c->local_maxpacket, 0, buf, 1); |
c->local_window_max, c->local_maxpacket, 0, buf, 1); |
open_preamble(ssh, __func__, nc, "x11"); |
open_preamble(ssh, __func__, nc, "x11"); |
if ((r = sshpkt_put_cstring(ssh, remote_ipaddr)) != 0) { |
if ((r = sshpkt_put_cstring(ssh, remote_ipaddr)) != 0 || |
|
(r = sshpkt_put_u32(ssh, remote_port)) != 0) { |
fatal("%s: channel %i: reply %s", __func__, |
fatal("%s: channel %i: reply %s", __func__, |
c->self, ssh_err(r)); |
c->self, ssh_err(r)); |
} |
} |
if ((datafellows & SSH_BUG_X11FWD) != 0) |
|
debug2("channel %d: ssh2 x11 bug compat mode", nc->self); |
|
else if ((r = sshpkt_put_u32(ssh, remote_port)) != 0) { |
|
fatal("%s: channel %i: reply %s", __func__, |
|
c->self, ssh_err(r)); |
|
} |
|
if ((r = sshpkt_send(ssh)) != 0) |
if ((r = sshpkt_send(ssh)) != 0) |
fatal("%s: channel %i: send %s", __func__, c->self, ssh_err(r)); |
fatal("%s: channel %i: send %s", __func__, c->self, ssh_err(r)); |
free(remote_ipaddr); |
free(remote_ipaddr); |
|
|
if ((r = sshpkt_start(ssh, |
if ((r = sshpkt_start(ssh, |
SSH2_MSG_CHANNEL_OPEN_FAILURE)) != 0 || |
SSH2_MSG_CHANNEL_OPEN_FAILURE)) != 0 || |
(r = sshpkt_put_u32(ssh, c->remote_id)) != 0 || |
(r = sshpkt_put_u32(ssh, c->remote_id)) != 0 || |
(r = sshpkt_put_u32(ssh, SSH2_OPEN_CONNECT_FAILED)) |
(r = sshpkt_put_u32(ssh, |
!= 0) |
SSH2_OPEN_CONNECT_FAILED)) != 0 || |
|
(r = sshpkt_put_cstring(ssh, strerror(err))) != 0 || |
|
(r = sshpkt_put_cstring(ssh, "")) != 0) { |
fatal("%s: channel %i: failure: %s", __func__, |
fatal("%s: channel %i: failure: %s", __func__, |
c->self, ssh_err(r)); |
c->self, ssh_err(r)); |
if ((datafellows & SSH_BUG_OPENFAILURE) == 0 && |
} |
((r = sshpkt_put_cstring(ssh, strerror(err))) != 0 || |
|
(r = sshpkt_put_cstring(ssh, "")) != 0)) |
|
fatal("%s: channel %i: failure: %s", __func__, |
|
c->self, ssh_err(r)); |
|
if ((r = sshpkt_send(ssh)) != 0) |
if ((r = sshpkt_send(ssh)) != 0) |
fatal("%s: channel %i: %s", __func__, c->self, |
fatal("%s: channel %i: %s", __func__, c->self, |
ssh_err(r)); |
ssh_err(r)); |
|
|
error("%s: reason: %s", __func__, ssh_err(r)); |
error("%s: reason: %s", __func__, ssh_err(r)); |
packet_disconnect("Invalid open failure message"); |
packet_disconnect("Invalid open failure message"); |
} |
} |
if ((datafellows & SSH_BUG_OPENFAILURE) == 0) { |
/* skip language */ |
/* skip language */ |
if ((r = sshpkt_get_cstring(ssh, &msg, NULL)) != 0 || |
if ((r = sshpkt_get_cstring(ssh, &msg, NULL)) != 0 || |
(r = sshpkt_get_string_direct(ssh, NULL, NULL)) != 0) { |
(r = sshpkt_get_string_direct(ssh, NULL, NULL)) != 0) { |
error("%s: message/lang: %s", __func__, ssh_err(r)); |
error("%s: message/lang: %s", __func__, ssh_err(r)); |
packet_disconnect("Invalid open failure message"); |
packet_disconnect("Invalid open failure message"); |
|
} |
|
} |
} |
ssh_packet_check_eom(ssh); |
ssh_packet_check_eom(ssh); |
logit("channel %d: open failed: %s%s%s", c->self, |
logit("channel %d: open failed: %s%s%s", c->self, |
|
|
channel_rfwd_bind_host(const char *listen_host) |
channel_rfwd_bind_host(const char *listen_host) |
{ |
{ |
if (listen_host == NULL) { |
if (listen_host == NULL) { |
if (datafellows & SSH_BUG_RFWD_ADDR) |
return "localhost"; |
return "127.0.0.1"; |
|
else |
|
return "localhost"; |
|
} else if (*listen_host == '\0' || strcmp(listen_host, "*") == 0) { |
} else if (*listen_host == '\0' || strcmp(listen_host, "*") == 0) { |
if (datafellows & SSH_BUG_RFWD_ADDR) |
return ""; |
return "0.0.0.0"; |
|
else |
|
return ""; |
|
} else |
} else |
return listen_host; |
return listen_host; |
} |
} |