From 616579b5d773c50af31ee56f00105d96ce641ca2 Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Sat, 14 Aug 2021 10:30:13 +0100 Subject: gentoo resync : 14.08.2021 --- .../util-linux-2.37.1-agetty_ctrl-c_erase.patch | 50 ++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 sys-apps/util-linux/files/util-linux-2.37.1-agetty_ctrl-c_erase.patch (limited to 'sys-apps/util-linux/files/util-linux-2.37.1-agetty_ctrl-c_erase.patch') diff --git a/sys-apps/util-linux/files/util-linux-2.37.1-agetty_ctrl-c_erase.patch b/sys-apps/util-linux/files/util-linux-2.37.1-agetty_ctrl-c_erase.patch new file mode 100644 index 000000000000..4828fd449f95 --- /dev/null +++ b/sys-apps/util-linux/files/util-linux-2.37.1-agetty_ctrl-c_erase.patch @@ -0,0 +1,50 @@ +From 6eb1c01e9dd25a73100f06db37190c63fd57d4d9 Mon Sep 17 00:00:00 2001 +From: Karel Zak +Date: Fri, 30 Jul 2021 11:50:46 +0200 +Subject: [PATCH] agetty: use CTRL+C to erase username + +aggety(8) from the beginning ignores ^C (the small exception was +between 2.32 and 2.34 when this char has been misinterpreted). + +This patch forces agetty to interpret ^C like ^U, it means to +erase the user's input and wait for a completely new username. +The small difference is that for ^C it does not set 'kill character'. + +This change does not affect serial lines where ^C is still ignored like +in previous decades. I'd like to avoid any regression as I have +no clue if any serial lines do not send this control char in some +context ... + +Fixes: https://github.com/karelzak/util-linux/issues/1399 +References: https://github.com/karelzak/util-linux/issues/1046 +Signed-off-by: Karel Zak +--- + term-utils/agetty.c | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +diff --git a/term-utils/agetty.c b/term-utils/agetty.c +index 3b3d5101a..d072d64d3 100644 +--- a/term-utils/agetty.c ++++ b/term-utils/agetty.c +@@ -2267,6 +2267,11 @@ static char *get_logname(struct issue *ie, struct options *op, struct termios *t + break; + case CTL('U'): + cp->kill = ascval; /* set kill character */ ++ /* fallthrough */ ++ case CTL('C'): ++ if (key == CTL('C') && !(op->flags & F_VCONSOLE)) ++ /* Ignore CTRL+C on serial line */ ++ break; + while (bp > logname) { + if ((tp->c_lflag & ECHO) == 0) + write_all(1, erase[cp->parity], 3); +@@ -2275,9 +2280,6 @@ 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); -- cgit v1.2.3