agetty: ignore ^C

Danc86 wrote:
 With agetty 2.32.1 and earlier, ^C at the login prompt is ignored. I
 noticed when upgrading to agetty 2.34, typing ^C now causes agetty to
 stop responding for 10 seconds and then it dies (and gets restarted by
 system and a new login prompt is printed).

 It logs this message:

   agetty[46048]: ttyS0: invalid character 0x3 in login name

 Previously the !isprint(ascval) condition would have caused control
 characters like ^C (\x03) to be discarded, whereas now it falls
 through to trying to decode it as part of a UTF-8 sequence, and then
 fails.

Fixes: 5de9751997
Addresses: https://github.com/karelzak/util-linux/issues/1046
Signed-off-by: Karel Zak <kzak@redhat.com>
This commit is contained in:
Karel Zak 2020-05-22 10:22:12 +02:00
parent 83fdb880b9
commit 88aefd4c46
1 changed files with 3 additions and 0 deletions

View File

@ -2271,6 +2271,9 @@ static char *get_logname(struct issue *ie, struct options *op, struct termios *t
break;
case CTL('D'):
exit(EXIT_SUCCESS);
case CTL('C'):
/* Ignore */
break;
default:
if ((size_t)(bp - logname) >= sizeof(logname) - 1)
log_err(_("%s: input overrun"), op->tty);