From 4dd66bddc7f34d14bc6bb09d1c9597b0dab3dd93 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Nicolas=20Fran=C3=A7ois?= Date: Mon, 19 Aug 2013 23:26:54 +0200 Subject: [PATCH] Check for failure before setting term in RAW mode. * src/su.c: Do not set terminal in RAW mode in case of earlier failure. --- ChangeLog | 2 ++ src/su.c | 5 ++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4bbc9b8e0..b149b0e39 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,8 @@ * src/su.c: Fail if the process group leader or the controlling terminal cannot be set. + * src/su.c: Do not set terminal in RAW mode in case of earlier + failure. 2013-08-19 Nicolas François diff --git a/src/su.c b/src/su.c index 5c5aec833..122914bda 100644 --- a/src/su.c +++ b/src/su.c @@ -420,7 +420,7 @@ static void handle_session (void) } } - if (have_tty == true) { + if ((0 == caught) && (have_tty == true)) { /* Set RAW mode */ termset_new = termset_save; cfmakeraw (&termset_new); @@ -514,8 +514,6 @@ static void handle_session (void) } } } while (!stop); - } - if (have_tty == true) { close (fd_pts); @@ -523,6 +521,7 @@ static void handle_session (void) if (tcsetattr (STDIN_FILENO, TCSANOW, &termset_save) == -1) fprintf (stderr, _("%s: Cannot reset termios attributes\n"), Prog); } + } if (0 != caught) { (void) fputs ("\n", stderr); -- 2.47.3