Package: ssh Version: 3.8.1p1 Hi!
Occassionally, I mistype my username when I try to scp a file from one machine to another one. Typically, I then press Ctrl-C (while being at the "Password:" prompt). Unfortunately, the termios settings aren't restored then, leaving me with a terminal that doesn't echo my input. I need to reset(1) then... For inhouse use, I'm using this patch to fix the issue, maybe it's useful for Debian (or even upstream), too: diff -Nur openssh-3.8.1p1/scp.c openssh-3.8.1p1-hacked/scp.c --- openssh-3.8.1p1/scp.c 2003-11-24 03:09:28.000000000 +0100 +++ openssh-3.8.1p1-hacked/scp.c 2005-04-06 12:24:31.000000000 +0200 @@ -109,12 +109,22 @@ /* This is used to store the pid of ssh_program */ pid_t do_cmd_pid = -1; +/* Keep old terminal settings to restore them on Ctrl-C etc. */ +int termios_valid = -1; +struct termios old_termios[3]; + static void killchild(int signo) { if (do_cmd_pid > 1) kill(do_cmd_pid, signo); + if (termios_valid == 0) { + (void) tcsetattr(STDIN_FILENO, TCSANOW, &old_termios[0]); + (void) tcsetattr(STDOUT_FILENO, TCSANOW, &old_termios[1]); + (void) tcsetattr(STDERR_FILENO, TCSANOW, &old_termios[2]); + } + _exit(1); } @@ -298,6 +308,10 @@ argc -= optind; argv += optind; + termios_valid = tcgetattr(STDIN_FILENO, &old_termios[0]); + termios_valid |= tcgetattr(STDOUT_FILENO, &old_termios[1]); + termios_valid |= tcgetattr(STDERR_FILENO, &old_termios[2]); + if ((pwd = getpwuid(userid = getuid())) == NULL) fatal("unknown user %u", (u_int) userid); Thanks, JBG -- Jan-Benedict Glaw [EMAIL PROTECTED] . +49-172-7608481 _ O _ "Eine Freie Meinung in einem Freien Kopf | Gegen Zensur | Gegen Krieg _ _ O fuer einen Freien Staat voll Freier BÃrger" | im Internet! | im Irak! O O O ret = do_actions((curr | FREE_SPEECH) & ~(NEW_COPYRIGHT_LAW | DRM | TCPA));
signature.asc
Description: Digital signature