diff options
author | green <green@FreeBSD.org> | 2000-11-14 03:51:53 +0000 |
---|---|---|
committer | green <green@FreeBSD.org> | 2000-11-14 03:51:53 +0000 |
commit | 100d82038d69581b72d61ea79acb559a97322110 (patch) | |
tree | b3bccadbb1973f3fee3e910f31b28f7ee6784df9 | |
parent | 0ca2bdc2f755d323cf97966ca69c4d32b283070a (diff) | |
download | FreeBSD-src-100d82038d69581b72d61ea79acb559a97322110.zip FreeBSD-src-100d82038d69581b72d61ea79acb559a97322110.tar.gz |
Import a security fix: the client would allow a server to use its
ssh-agent or X11 forwarding even if it was disabled.
This is the vendor fix provided, not an actual revision of clientloop.c.
Submitted by: Markus Friedl <markus@OpenBSD.org> via kris
-rw-r--r-- | crypto/openssh/clientloop.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/crypto/openssh/clientloop.c b/crypto/openssh/clientloop.c index 4f5c39c..4a10b98 100644 --- a/crypto/openssh/clientloop.c +++ b/crypto/openssh/clientloop.c @@ -75,6 +75,8 @@ RCSID("$OpenBSD: clientloop.c,v 1.34 2000/09/07 20:40:30 markus Exp $"); #include "buffer.h" #include "bufaux.h" +extern Options options; + /* Flag indicating that stdin should be redirected from /dev/null. */ extern int stdin_null_flag; @@ -793,7 +795,6 @@ simple_escape_filter(Channel *c, char *buf, int len) int client_loop(int have_pty, int escape_char_arg, int ssh2_chan_id) { - extern Options options; double start_time, total_time; int len; char buf[100]; @@ -1036,7 +1037,7 @@ client_input_channel_open(int type, int plen) debug("client_input_channel_open: ctype %s rchan %d win %d max %d", ctype, rchan, rwindow, rmaxpack); - if (strcmp(ctype, "x11") == 0) { + if (strcmp(ctype, "x11") == 0 && options.forward_x11) { int sock; char *originator; int originator_port; @@ -1108,11 +1109,14 @@ client_init_dispatch_13() dispatch_set(SSH_MSG_CHANNEL_OPEN_CONFIRMATION, &channel_input_open_confirmation); dispatch_set(SSH_MSG_CHANNEL_OPEN_FAILURE, &channel_input_open_failure); dispatch_set(SSH_MSG_PORT_OPEN, &channel_input_port_open); - dispatch_set(SSH_SMSG_AGENT_OPEN, &auth_input_open_request); dispatch_set(SSH_SMSG_EXITSTATUS, &client_input_exit_status); dispatch_set(SSH_SMSG_STDERR_DATA, &client_input_stderr_data); dispatch_set(SSH_SMSG_STDOUT_DATA, &client_input_stdout_data); - dispatch_set(SSH_SMSG_X11_OPEN, &x11_input_open); + + dispatch_set(SSH_SMSG_AGENT_OPEN, options.forward_agent ? + &auth_input_open_request : NULL); + dispatch_set(SSH_SMSG_X11_OPEN, options.forward_x11 ? + &x11_input_open : NULL); } void client_init_dispatch_15() |