[1256] in Kerberos-V5-bugs

home help back first fref pref prev next nref lref last post

krb5b4pl3: appl/bsd/krlogin.c: make ^V work properly

daemon@ATHENA.MIT.EDU (Jonathan I. Kamens)
Thu Mar 23 15:23:45 1995

From: "Jonathan I. Kamens" <jik@cam.ov.com>
Date: Thu, 23 Mar 1995 15:26:53 -0500
To: krb5-bugs@MIT.EDU

Whenever ICANON is enabled/disabled, IEXTEN needs to be
enabled/disabled as well, so that ^V will be passed on to the remote
connection rather than interpreted locally.

Here's a patch:

--- krlogin.c	1995/03/23 20:18:58	1.13
+++ krlogin.c	1995/03/23 20:25:04
@@ -1231,7 +1231,7 @@
 	(void) ioctl(0, TIOCGETP, (char *)&sb);
 #ifdef USE_TERMIO
 	sb.c_iflag |= IXOFF;
-	sb.sg_flags &= ~ICANON;
+	sb.sg_flags &= ~(ICANON|IEXTEN);
 #else
 	sb.sg_flags &= ~CBREAK;
 	sb.sg_flags |= RAW;
@@ -1244,7 +1244,7 @@
     if (!eight && (mark & TIOCPKT_DOSTOP)) {
 	(void) ioctl(0, TIOCGETP, (char *)&sb);
 #ifdef USE_TERMIO
-	sb.sg_flags  |= ICANON;
+	sb.sg_flags  |= ICANON|IEXTEN;
 	sb.c_iflag |= IXON;
 #else
 	sb.sg_flags &= ~RAW;
@@ -1391,16 +1391,15 @@
 		newtty.c_cc[VLNEXT] = 0;
 #endif
 		
-		newtty.c_lflag &= ~(ICANON|ISIG|ECHO);
 		if (!flow)
 		{
-			newtty.c_lflag &= ~(ICANON|ISIG|ECHO);
+			newtty.c_lflag &= ~(ICANON|IEXTEN|ISIG|ECHO);
 			newtty.c_iflag &= ~(BRKINT|INLCR|ICRNL|ISTRIP);
 			/* newtty.c_iflag |=  (IXON|IXANY); */
 			newtty.c_iflag &= ~(IXON|IXANY);
 			newtty.c_oflag &= ~(OPOST);
 		} else {
-			newtty.c_lflag &= ~(ICANON|ISIG|ECHO);
+			newtty.c_lflag &= ~(ICANON|IEXTEN|ISIG|ECHO);
 			newtty.c_iflag &= ~(INLCR|ICRNL);
 			/* newtty.c_iflag |=  (BRKINT|ISTRIP|IXON|IXANY); */
 			newtty.c_iflag &= ~(IXON|IXANY);
@@ -1480,7 +1479,7 @@
 	 **      also turn off signal checking -- ICANON might be
 	 **      enough to do this, but we're being careful
 	 */
-	sb.c_lflag &= ~(ECHO|ICANON|ISIG);
+	sb.c_lflag &= ~(ECHO|ICANON|IEXTEN|ISIG);
 	sb.c_cc[VTIME] = 1;
 	sb.c_cc[VMIN] = 1;
 	if (eight)
 

home help back first fref pref prev next nref lref last post