version 1.313, 2019/02/05 11:35:56 |
version 1.314, 2019/02/10 11:10:57 |
|
|
do_child(struct ssh *ssh, Session *s, const char *command) |
do_child(struct ssh *ssh, Session *s, const char *command) |
{ |
{ |
extern char **environ; |
extern char **environ; |
char **env; |
char **env, *argv[ARGV_MAX], remote_id[512]; |
char *argv[ARGV_MAX]; |
|
const char *shell, *shell0; |
const char *shell, *shell0; |
struct passwd *pw = s->pw; |
struct passwd *pw = s->pw; |
int r = 0; |
int r = 0; |
|
|
|
sshpkt_fmt_connection_id(ssh, remote_id, sizeof(remote_id)); |
|
|
/* remove hostkey from the child's memory */ |
/* remove hostkey from the child's memory */ |
destroy_sensitive_data(); |
destroy_sensitive_data(); |
ssh_packet_clear_keys(ssh); |
ssh_packet_clear_keys(ssh); |
|
|
signal(SIGPIPE, SIG_DFL); |
signal(SIGPIPE, SIG_DFL); |
|
|
if (s->is_subsystem == SUBSYSTEM_INT_SFTP_ERROR) { |
if (s->is_subsystem == SUBSYSTEM_INT_SFTP_ERROR) { |
|
error("Connection from %s: refusing non-sftp session", |
|
remote_id); |
printf("This service allows sftp connections only.\n"); |
printf("This service allows sftp connections only.\n"); |
fflush(NULL); |
fflush(NULL); |
exit(1); |
exit(1); |