mirror of
https://github.com/PowerShell/openssh-portable.git
synced 2025-07-27 07:44:29 +02:00
20001206
- (bal) OpenSSH CVS updates: - markus@cvs.openbsd.org 2000/12/05 20:34:09 [channels.c channels.h clientloop.c serverloop.c] async connects for -R/-L; ok deraadt@ - todd@cvs.openssh.org 2000/12/05 16:47:28 [sshd.c] tweak comment to reflect real location of pid file; ok provos@
This commit is contained in:
parent
3c51676a56
commit
7ad9710334
12
ChangeLog
12
ChangeLog
@ -1,3 +1,12 @@
|
|||||||
|
20001206
|
||||||
|
- (bal) OpenSSH CVS updates:
|
||||||
|
- markus@cvs.openbsd.org 2000/12/05 20:34:09
|
||||||
|
[channels.c channels.h clientloop.c serverloop.c]
|
||||||
|
async connects for -R/-L; ok deraadt@
|
||||||
|
- todd@cvs.openssh.org 2000/12/05 16:47:28
|
||||||
|
[sshd.c]
|
||||||
|
tweak comment to reflect real location of pid file; ok provos@
|
||||||
|
|
||||||
20001205
|
20001205
|
||||||
- (bal) OpenSSH CVS updates:
|
- (bal) OpenSSH CVS updates:
|
||||||
- markus@cvs.openbsd.org 2000/12/04 19:24:02
|
- markus@cvs.openbsd.org 2000/12/04 19:24:02
|
||||||
@ -16,7 +25,8 @@
|
|||||||
remove fallback to SSH_BUG_HMAC now that the drafts are updated
|
remove fallback to SSH_BUG_HMAC now that the drafts are updated
|
||||||
- markus@cvs.openbsd.org 2000/12/03 11:27:55
|
- markus@cvs.openbsd.org 2000/12/03 11:27:55
|
||||||
[compat.c]
|
[compat.c]
|
||||||
correctly match "2.1.0.pl2 SSH" etc; from pekkas@netcore.fi/bugzilla.redhat
|
correctly match "2.1.0.pl2 SSH" etc; from
|
||||||
|
pekkas@netcore.fi/bugzilla.redhat
|
||||||
- markus@cvs.openbsd.org 2000/12/03 11:15:03
|
- markus@cvs.openbsd.org 2000/12/03 11:15:03
|
||||||
[auth2.c compat.c compat.h sshconnect2.c]
|
[auth2.c compat.c compat.h sshconnect2.c]
|
||||||
support f-secure/ssh.com 2.0.12; ok niels@
|
support f-secure/ssh.com 2.0.12; ok niels@
|
||||||
|
48
channels.c
48
channels.c
@ -40,7 +40,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
RCSID("$OpenBSD: channels.c,v 1.74 2000/11/30 22:54:31 markus Exp $");
|
RCSID("$OpenBSD: channels.c,v 1.75 2000/12/05 20:34:09 markus Exp $");
|
||||||
|
|
||||||
#include "ssh.h"
|
#include "ssh.h"
|
||||||
#include "packet.h"
|
#include "packet.h"
|
||||||
@ -345,6 +345,13 @@ channel_pre_listener(Channel *c, fd_set * readset, fd_set * writeset)
|
|||||||
FD_SET(c->sock, readset);
|
FD_SET(c->sock, readset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
channel_pre_connecting(Channel *c, fd_set * readset, fd_set * writeset)
|
||||||
|
{
|
||||||
|
debug3("channel %d: waiting for connection", c->self);
|
||||||
|
FD_SET(c->sock, writeset);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
channel_pre_open_13(Channel *c, fd_set * readset, fd_set * writeset)
|
channel_pre_open_13(Channel *c, fd_set * readset, fd_set * writeset)
|
||||||
{
|
{
|
||||||
@ -685,6 +692,28 @@ channel_post_auth_listener(Channel *c, fd_set * readset, fd_set * writeset)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
channel_post_connecting(Channel *c, fd_set * readset, fd_set * writeset)
|
||||||
|
{
|
||||||
|
if (FD_ISSET(c->sock, writeset)) {
|
||||||
|
int err = 0;
|
||||||
|
int sz = sizeof(err);
|
||||||
|
c->type = SSH_CHANNEL_OPEN;
|
||||||
|
if (getsockopt(c->sock, SOL_SOCKET, SO_ERROR, (char *)&err, &sz) < 0) {
|
||||||
|
debug("getsockopt SO_ERROR failed");
|
||||||
|
} else {
|
||||||
|
if (err == 0) {
|
||||||
|
debug("channel %d: connected)", c->self);
|
||||||
|
} else {
|
||||||
|
debug("channel %d: not connected: %s",
|
||||||
|
c->self, strerror(err));
|
||||||
|
chan_read_failed(c);
|
||||||
|
chan_write_failed(c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
channel_handle_rfd(Channel *c, fd_set * readset, fd_set * writeset)
|
channel_handle_rfd(Channel *c, fd_set * readset, fd_set * writeset)
|
||||||
{
|
{
|
||||||
@ -843,12 +872,14 @@ channel_handler_init_20(void)
|
|||||||
channel_pre[SSH_CHANNEL_RPORT_LISTENER] = &channel_pre_listener;
|
channel_pre[SSH_CHANNEL_RPORT_LISTENER] = &channel_pre_listener;
|
||||||
channel_pre[SSH_CHANNEL_X11_LISTENER] = &channel_pre_listener;
|
channel_pre[SSH_CHANNEL_X11_LISTENER] = &channel_pre_listener;
|
||||||
channel_pre[SSH_CHANNEL_AUTH_SOCKET] = &channel_pre_listener;
|
channel_pre[SSH_CHANNEL_AUTH_SOCKET] = &channel_pre_listener;
|
||||||
|
channel_pre[SSH_CHANNEL_CONNECTING] = &channel_pre_connecting;
|
||||||
|
|
||||||
channel_post[SSH_CHANNEL_OPEN] = &channel_post_open_2;
|
channel_post[SSH_CHANNEL_OPEN] = &channel_post_open_2;
|
||||||
channel_post[SSH_CHANNEL_PORT_LISTENER] = &channel_post_port_listener;
|
channel_post[SSH_CHANNEL_PORT_LISTENER] = &channel_post_port_listener;
|
||||||
channel_post[SSH_CHANNEL_RPORT_LISTENER] = &channel_post_port_listener;
|
channel_post[SSH_CHANNEL_RPORT_LISTENER] = &channel_post_port_listener;
|
||||||
channel_post[SSH_CHANNEL_X11_LISTENER] = &channel_post_x11_listener;
|
channel_post[SSH_CHANNEL_X11_LISTENER] = &channel_post_x11_listener;
|
||||||
channel_post[SSH_CHANNEL_AUTH_SOCKET] = &channel_post_auth_listener;
|
channel_post[SSH_CHANNEL_AUTH_SOCKET] = &channel_post_auth_listener;
|
||||||
|
channel_post[SSH_CHANNEL_CONNECTING] = &channel_post_connecting;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -861,12 +892,14 @@ channel_handler_init_13(void)
|
|||||||
channel_pre[SSH_CHANNEL_AUTH_SOCKET] = &channel_pre_listener;
|
channel_pre[SSH_CHANNEL_AUTH_SOCKET] = &channel_pre_listener;
|
||||||
channel_pre[SSH_CHANNEL_INPUT_DRAINING] = &channel_pre_input_draining;
|
channel_pre[SSH_CHANNEL_INPUT_DRAINING] = &channel_pre_input_draining;
|
||||||
channel_pre[SSH_CHANNEL_OUTPUT_DRAINING] = &channel_pre_output_draining;
|
channel_pre[SSH_CHANNEL_OUTPUT_DRAINING] = &channel_pre_output_draining;
|
||||||
|
channel_pre[SSH_CHANNEL_CONNECTING] = &channel_pre_connecting;
|
||||||
|
|
||||||
channel_post[SSH_CHANNEL_OPEN] = &channel_post_open_1;
|
channel_post[SSH_CHANNEL_OPEN] = &channel_post_open_1;
|
||||||
channel_post[SSH_CHANNEL_X11_LISTENER] = &channel_post_x11_listener;
|
channel_post[SSH_CHANNEL_X11_LISTENER] = &channel_post_x11_listener;
|
||||||
channel_post[SSH_CHANNEL_PORT_LISTENER] = &channel_post_port_listener;
|
channel_post[SSH_CHANNEL_PORT_LISTENER] = &channel_post_port_listener;
|
||||||
channel_post[SSH_CHANNEL_AUTH_SOCKET] = &channel_post_auth_listener;
|
channel_post[SSH_CHANNEL_AUTH_SOCKET] = &channel_post_auth_listener;
|
||||||
channel_post[SSH_CHANNEL_OUTPUT_DRAINING] = &channel_post_output_drain_13;
|
channel_post[SSH_CHANNEL_OUTPUT_DRAINING] = &channel_post_output_drain_13;
|
||||||
|
channel_post[SSH_CHANNEL_CONNECTING] = &channel_post_connecting;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -877,11 +910,13 @@ channel_handler_init_15(void)
|
|||||||
channel_pre[SSH_CHANNEL_X11_LISTENER] = &channel_pre_listener;
|
channel_pre[SSH_CHANNEL_X11_LISTENER] = &channel_pre_listener;
|
||||||
channel_pre[SSH_CHANNEL_PORT_LISTENER] = &channel_pre_listener;
|
channel_pre[SSH_CHANNEL_PORT_LISTENER] = &channel_pre_listener;
|
||||||
channel_pre[SSH_CHANNEL_AUTH_SOCKET] = &channel_pre_listener;
|
channel_pre[SSH_CHANNEL_AUTH_SOCKET] = &channel_pre_listener;
|
||||||
|
channel_pre[SSH_CHANNEL_CONNECTING] = &channel_pre_connecting;
|
||||||
|
|
||||||
channel_post[SSH_CHANNEL_X11_LISTENER] = &channel_post_x11_listener;
|
channel_post[SSH_CHANNEL_X11_LISTENER] = &channel_post_x11_listener;
|
||||||
channel_post[SSH_CHANNEL_PORT_LISTENER] = &channel_post_port_listener;
|
channel_post[SSH_CHANNEL_PORT_LISTENER] = &channel_post_port_listener;
|
||||||
channel_post[SSH_CHANNEL_AUTH_SOCKET] = &channel_post_auth_listener;
|
channel_post[SSH_CHANNEL_AUTH_SOCKET] = &channel_post_auth_listener;
|
||||||
channel_post[SSH_CHANNEL_OPEN] = &channel_post_open_1;
|
channel_post[SSH_CHANNEL_OPEN] = &channel_post_open_1;
|
||||||
|
channel_post[SSH_CHANNEL_CONNECTING] = &channel_post_connecting;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -1397,6 +1432,7 @@ channel_still_open()
|
|||||||
case SSH_CHANNEL_RPORT_LISTENER:
|
case SSH_CHANNEL_RPORT_LISTENER:
|
||||||
case SSH_CHANNEL_CLOSED:
|
case SSH_CHANNEL_CLOSED:
|
||||||
case SSH_CHANNEL_AUTH_SOCKET:
|
case SSH_CHANNEL_AUTH_SOCKET:
|
||||||
|
case SSH_CHANNEL_CONNECTING: /* XXX ??? */
|
||||||
continue;
|
continue;
|
||||||
case SSH_CHANNEL_LARVAL:
|
case SSH_CHANNEL_LARVAL:
|
||||||
if (!compat20)
|
if (!compat20)
|
||||||
@ -1446,6 +1482,7 @@ channel_open_message()
|
|||||||
continue;
|
continue;
|
||||||
case SSH_CHANNEL_LARVAL:
|
case SSH_CHANNEL_LARVAL:
|
||||||
case SSH_CHANNEL_OPENING:
|
case SSH_CHANNEL_OPENING:
|
||||||
|
case SSH_CHANNEL_CONNECTING:
|
||||||
case SSH_CHANNEL_OPEN:
|
case SSH_CHANNEL_OPEN:
|
||||||
case SSH_CHANNEL_X11_OPEN:
|
case SSH_CHANNEL_X11_OPEN:
|
||||||
case SSH_CHANNEL_INPUT_DRAINING:
|
case SSH_CHANNEL_INPUT_DRAINING:
|
||||||
@ -1702,8 +1739,11 @@ channel_connect_to(const char *host, u_short host_port)
|
|||||||
error("socket: %.100s", strerror(errno));
|
error("socket: %.100s", strerror(errno));
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if (fcntl(sock, F_SETFL, O_NDELAY) < 0)
|
||||||
|
fatal("connect_to: F_SETFL: %s", strerror(errno));
|
||||||
/* Connect to the host/port. */
|
/* Connect to the host/port. */
|
||||||
if (connect(sock, ai->ai_addr, ai->ai_addrlen) < 0) {
|
if (connect(sock, ai->ai_addr, ai->ai_addrlen) < 0 &&
|
||||||
|
errno != EINPROGRESS) {
|
||||||
error("connect %.100s port %s: %.100s", ntop, strport,
|
error("connect %.100s port %s: %.100s", ntop, strport,
|
||||||
strerror(errno));
|
strerror(errno));
|
||||||
close(sock);
|
close(sock);
|
||||||
@ -1789,7 +1829,9 @@ channel_input_port_open(int type, int plen, void *ctxt)
|
|||||||
sock = denied ? -1 : channel_connect_to(host, host_port);
|
sock = denied ? -1 : channel_connect_to(host, host_port);
|
||||||
if (sock > 0) {
|
if (sock > 0) {
|
||||||
/* Allocate a channel for this connection. */
|
/* Allocate a channel for this connection. */
|
||||||
newch = channel_allocate(SSH_CHANNEL_OPEN, sock, originator_string);
|
newch = channel_allocate(SSH_CHANNEL_CONNECTING,
|
||||||
|
sock, originator_string);
|
||||||
|
/*XXX delay answer? */
|
||||||
channels[newch].remote_id = remote_channel;
|
channels[newch].remote_id = remote_channel;
|
||||||
|
|
||||||
packet_start(SSH_MSG_CHANNEL_OPEN_CONFIRMATION);
|
packet_start(SSH_MSG_CHANNEL_OPEN_CONFIRMATION);
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
/* RCSID("$OpenBSD: channels.h,v 1.23 2000/11/06 23:04:56 markus Exp $"); */
|
/* RCSID("$OpenBSD: channels.h,v 1.24 2000/12/05 20:34:10 markus Exp $"); */
|
||||||
|
|
||||||
#ifndef CHANNELS_H
|
#ifndef CHANNELS_H
|
||||||
#define CHANNELS_H
|
#define CHANNELS_H
|
||||||
@ -50,7 +50,8 @@
|
|||||||
#define SSH_CHANNEL_OUTPUT_DRAINING 9 /* sending remaining data to app */
|
#define SSH_CHANNEL_OUTPUT_DRAINING 9 /* sending remaining data to app */
|
||||||
#define SSH_CHANNEL_LARVAL 10 /* larval session */
|
#define SSH_CHANNEL_LARVAL 10 /* larval session */
|
||||||
#define SSH_CHANNEL_RPORT_LISTENER 11 /* Listening to a R-style port */
|
#define SSH_CHANNEL_RPORT_LISTENER 11 /* Listening to a R-style port */
|
||||||
#define SSH_CHANNEL_MAX_TYPE 12
|
#define SSH_CHANNEL_CONNECTING 12
|
||||||
|
#define SSH_CHANNEL_MAX_TYPE 13
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Data structure for channel data. This is iniailized in channel_allocate
|
* Data structure for channel data. This is iniailized in channel_allocate
|
||||||
|
@ -59,7 +59,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
RCSID("$OpenBSD: clientloop.c,v 1.40 2000/11/06 23:04:56 markus Exp $");
|
RCSID("$OpenBSD: clientloop.c,v 1.41 2000/12/05 20:34:10 markus Exp $");
|
||||||
|
|
||||||
#include "xmalloc.h"
|
#include "xmalloc.h"
|
||||||
#include "ssh.h"
|
#include "ssh.h"
|
||||||
@ -1041,7 +1041,7 @@ client_request_forwarded_tcpip(const char *request_type, int rchan)
|
|||||||
sock = channel_connect_by_listen_adress(listen_port);
|
sock = channel_connect_by_listen_adress(listen_port);
|
||||||
if (sock >= 0) {
|
if (sock >= 0) {
|
||||||
newch = channel_new("forwarded-tcpip",
|
newch = channel_new("forwarded-tcpip",
|
||||||
SSH_CHANNEL_OPEN, sock, sock, -1,
|
SSH_CHANNEL_CONNECTING, sock, sock, -1,
|
||||||
CHAN_TCP_WINDOW_DEFAULT, CHAN_TCP_WINDOW_DEFAULT, 0,
|
CHAN_TCP_WINDOW_DEFAULT, CHAN_TCP_WINDOW_DEFAULT, 0,
|
||||||
xstrdup(originator_address), 1);
|
xstrdup(originator_address), 1);
|
||||||
c = channel_lookup(newch);
|
c = channel_lookup(newch);
|
||||||
|
@ -35,7 +35,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
RCSID("$OpenBSD: serverloop.c,v 1.35 2000/11/06 23:04:56 markus Exp $");
|
RCSID("$OpenBSD: serverloop.c,v 1.36 2000/12/05 20:34:10 markus Exp $");
|
||||||
|
|
||||||
#include "xmalloc.h"
|
#include "xmalloc.h"
|
||||||
#include "ssh.h"
|
#include "ssh.h"
|
||||||
@ -750,7 +750,7 @@ server_request_direct_tcpip(char *ctype)
|
|||||||
xfree(originator);
|
xfree(originator);
|
||||||
if (sock < 0)
|
if (sock < 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
newch = channel_new(ctype, SSH_CHANNEL_OPEN,
|
newch = channel_new(ctype, SSH_CHANNEL_CONNECTING,
|
||||||
sock, sock, -1, CHAN_TCP_WINDOW_DEFAULT,
|
sock, sock, -1, CHAN_TCP_WINDOW_DEFAULT,
|
||||||
CHAN_TCP_PACKET_DEFAULT, 0, xstrdup("direct-tcpip"), 1);
|
CHAN_TCP_PACKET_DEFAULT, 0, xstrdup("direct-tcpip"), 1);
|
||||||
return (newch >= 0) ? channel_lookup(newch) : NULL;
|
return (newch >= 0) ? channel_lookup(newch) : NULL;
|
||||||
|
8
sshd.c
8
sshd.c
@ -40,7 +40,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
RCSID("$OpenBSD: sshd.c,v 1.135 2000/11/29 21:11:59 markus Exp $");
|
RCSID("$OpenBSD: sshd.c,v 1.136 2000/12/05 16:47:28 todd Exp $");
|
||||||
|
|
||||||
#include "xmalloc.h"
|
#include "xmalloc.h"
|
||||||
#include "rsa.h"
|
#include "rsa.h"
|
||||||
@ -881,9 +881,9 @@ main(int ac, char **av)
|
|||||||
|
|
||||||
if (!debug_flag) {
|
if (!debug_flag) {
|
||||||
/*
|
/*
|
||||||
* Record our pid in /etc/sshd_pid to make it easier
|
* Record our pid in /var/run/sshd.pid to make it
|
||||||
* to kill the correct sshd. We don\'t want to do
|
* easier to kill the correct sshd. We don't want to
|
||||||
* this before the bind above because the bind will
|
* do this before the bind above because the bind will
|
||||||
* fail if there already is a daemon, and this will
|
* fail if there already is a daemon, and this will
|
||||||
* overwrite any old pid in the file.
|
* overwrite any old pid in the file.
|
||||||
*/
|
*/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user