version 1.141, 2005/07/16 01:35:24 |
version 1.141.2.1, 2006/02/03 03:01:56 |
|
|
#include "log.h" |
#include "log.h" |
#include "readconf.h" |
#include "readconf.h" |
#include "clientloop.h" |
#include "clientloop.h" |
|
#include "sshconnect.h" |
#include "authfd.h" |
#include "authfd.h" |
#include "atomicio.h" |
#include "atomicio.h" |
#include "sshpty.h" |
#include "sshpty.h" |
|
|
static volatile sig_atomic_t received_window_change_signal = 0; |
static volatile sig_atomic_t received_window_change_signal = 0; |
static volatile sig_atomic_t received_signal = 0; |
static volatile sig_atomic_t received_signal = 0; |
|
|
/* Flag indicating whether the user\'s terminal is in non-blocking mode. */ |
/* Flag indicating whether the user's terminal is in non-blocking mode. */ |
static int in_non_blocking_mode = 0; |
static int in_non_blocking_mode = 0; |
|
|
/* Common data for the client loop code. */ |
/* Common data for the client loop code. */ |
|
|
} |
} |
} |
} |
snprintf(cmd, sizeof(cmd), |
snprintf(cmd, sizeof(cmd), |
"%s %s%s list %s . 2>" _PATH_DEVNULL, |
"%s %s%s list %s 2>" _PATH_DEVNULL, |
xauth_path, |
xauth_path, |
generated ? "-f " : "" , |
generated ? "-f " : "" , |
generated ? xauthfile : "", |
generated ? xauthfile : "", |
|
|
logit(" -Lport:host:hostport Request local forward"); |
logit(" -Lport:host:hostport Request local forward"); |
logit(" -Rport:host:hostport Request remote forward"); |
logit(" -Rport:host:hostport Request remote forward"); |
logit(" -KRhostport Cancel remote forward"); |
logit(" -KRhostport Cancel remote forward"); |
|
if (!options.permit_local_command) |
|
goto out; |
|
logit(" !args Execute local command"); |
goto out; |
goto out; |
} |
} |
|
|
|
if (*s == '!' && options.permit_local_command) { |
|
s++; |
|
ssh_local_cmd(s); |
|
goto out; |
|
} |
|
|
if (*s == 'K') { |
if (*s == 'K') { |
delete = 1; |
delete = 1; |
s++; |
s++; |
|
|
session_ident = ssh2_chan_id; |
session_ident = ssh2_chan_id; |
if (escape_char != SSH_ESCAPECHAR_NONE) |
if (escape_char != SSH_ESCAPECHAR_NONE) |
channel_register_filter(session_ident, |
channel_register_filter(session_ident, |
simple_escape_filter); |
simple_escape_filter, NULL); |
if (session_ident != -1) |
if (session_ident != -1) |
channel_register_cleanup(session_ident, |
channel_register_cleanup(session_ident, |
client_channel_closed); |
client_channel_closed, 0); |
} else { |
} else { |
/* Check if we should immediately send eof on stdin. */ |
/* Check if we should immediately send eof on stdin. */ |
client_check_initial_eof_on_stdin(); |
client_check_initial_eof_on_stdin(); |
|
|
|
|
if (!options.forward_x11) { |
if (!options.forward_x11) { |
error("Warning: ssh server tried X11 forwarding."); |
error("Warning: ssh server tried X11 forwarding."); |
error("Warning: this is probably a break in attempt by a malicious server."); |
error("Warning: this is probably a break-in attempt by a malicious server."); |
return NULL; |
return NULL; |
} |
} |
originator = packet_get_string(NULL); |
originator = packet_get_string(NULL); |
|
|
|
|
if (!options.forward_agent) { |
if (!options.forward_agent) { |
error("Warning: ssh server tried agent forwarding."); |
error("Warning: ssh server tried agent forwarding."); |
error("Warning: this is probably a break in attempt by a malicious server."); |
error("Warning: this is probably a break-in attempt by a malicious server."); |
return NULL; |
return NULL; |
} |
} |
sock = ssh_get_authentication_socket(); |
sock = ssh_get_authentication_socket(); |
|
|
/* Split */ |
/* Split */ |
name = xstrdup(env[i]); |
name = xstrdup(env[i]); |
if ((val = strchr(name, '=')) == NULL) { |
if ((val = strchr(name, '=')) == NULL) { |
free(name); |
xfree(name); |
continue; |
continue; |
} |
} |
*val++ = '\0'; |
*val++ = '\0'; |
|
|
} |
} |
if (!matched) { |
if (!matched) { |
debug3("Ignored env %s", name); |
debug3("Ignored env %s", name); |
free(name); |
xfree(name); |
continue; |
continue; |
} |
} |
|
|
|
|
packet_put_cstring(name); |
packet_put_cstring(name); |
packet_put_cstring(val); |
packet_put_cstring(val); |
packet_send(); |
packet_send(); |
free(name); |
xfree(name); |
} |
} |
} |
} |
|
|