- djm@cvs.openbsd.org 2012/07/06 01:47:38

[ssh.c]
     move setting of tty_flag to after config parsing so RequestTTY options
     are correctly picked up. bz#1995 patch from przemoc AT gmail.com;
     ok dtucker@
This commit is contained in:
Damien Miller 2012-07-06 13:45:01 +10:00
parent ab523b0246
commit fff9f095e2
2 changed files with 26 additions and 22 deletions

View File

@ -16,6 +16,11 @@
fix memory leak of passed-in environment variables and connection fix memory leak of passed-in environment variables and connection
context when new session message is malformed; bz#2003 from Bert.Wesarg context when new session message is malformed; bz#2003 from Bert.Wesarg
AT googlemail.com AT googlemail.com
- djm@cvs.openbsd.org 2012/07/06 01:47:38
[ssh.c]
move setting of tty_flag to after config parsing so RequestTTY options
are correctly picked up. bz#1995 patch from przemoc AT gmail.com;
ok dtucker@
20120704 20120704
- (dtucker) [configure.ac openbsd-compat/bsd-misc.h] Add setlinebuf for - (dtucker) [configure.ac openbsd-compat/bsd-misc.h] Add setlinebuf for

43
ssh.c
View File

@ -1,4 +1,4 @@
/* $OpenBSD: ssh.c,v 1.369 2012/07/02 08:50:03 dtucker Exp $ */ /* $OpenBSD: ssh.c,v 1.370 2012/07/06 01:47:38 djm Exp $ */
/* /*
* Author: Tatu Ylonen <ylo@cs.hut.fi> * Author: Tatu Ylonen <ylo@cs.hut.fi>
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@ -638,10 +638,6 @@ main(int ac, char **av)
/* Initialize the command to execute on remote host. */ /* Initialize the command to execute on remote host. */
buffer_init(&command); buffer_init(&command);
if (options.request_tty == REQUEST_TTY_YES ||
options.request_tty == REQUEST_TTY_FORCE)
tty_flag = 1;
/* /*
* Save the command to execute on the remote host in a buffer. There * Save the command to execute on the remote host in a buffer. There
* is no limit on the length of the command, except by the maximum * is no limit on the length of the command, except by the maximum
@ -649,7 +645,6 @@ main(int ac, char **av)
*/ */
if (!ac) { if (!ac) {
/* No command specified - execute shell on a tty. */ /* No command specified - execute shell on a tty. */
tty_flag = options.request_tty != REQUEST_TTY_NO;
if (subsystem_flag) { if (subsystem_flag) {
fprintf(stderr, fprintf(stderr,
"You must specify a subsystem to invoke.\n"); "You must specify a subsystem to invoke.\n");
@ -670,22 +665,6 @@ main(int ac, char **av)
fatal("Cannot fork into background without a command " fatal("Cannot fork into background without a command "
"to execute."); "to execute.");
/* Allocate a tty by default if no command specified. */
if (buffer_len(&command) == 0)
tty_flag = options.request_tty != REQUEST_TTY_NO;
/* Force no tty */
if (options.request_tty == REQUEST_TTY_NO || muxclient_command != 0)
tty_flag = 0;
/* Do not allocate a tty if stdin is not a tty. */
if ((!isatty(fileno(stdin)) || stdin_null_flag) &&
options.request_tty != REQUEST_TTY_FORCE) {
if (tty_flag)
logit("Pseudo-terminal will not be allocated because "
"stdin is not a terminal.");
tty_flag = 0;
}
/* /*
* Initialize "log" output. Since we are the client all output * Initialize "log" output. Since we are the client all output
* actually goes to stderr. * actually goes to stderr.
@ -721,6 +700,26 @@ main(int ac, char **av)
/* reinit */ /* reinit */
log_init(argv0, options.log_level, SYSLOG_FACILITY_USER, !use_syslog); log_init(argv0, options.log_level, SYSLOG_FACILITY_USER, !use_syslog);
if (options.request_tty == REQUEST_TTY_YES ||
options.request_tty == REQUEST_TTY_FORCE)
tty_flag = 1;
/* Allocate a tty by default if no command specified. */
if (buffer_len(&command) == 0)
tty_flag = options.request_tty != REQUEST_TTY_NO;
/* Force no tty */
if (options.request_tty == REQUEST_TTY_NO || muxclient_command != 0)
tty_flag = 0;
/* Do not allocate a tty if stdin is not a tty. */
if ((!isatty(fileno(stdin)) || stdin_null_flag) &&
options.request_tty != REQUEST_TTY_FORCE) {
if (tty_flag)
logit("Pseudo-terminal will not be allocated because "
"stdin is not a terminal.");
tty_flag = 0;
}
seed_rng(); seed_rng();
if (options.user == NULL) if (options.user == NULL)