Re: [PATCH] setterm: avoid restoring flags from uninitialized memory

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2023-10-31 14:52, Chris Hofstaedtler wrote:
Depending on the used compiler and flags, previously either F_SETFL was called
with 0 or with a random value. Never with the intended previous flags.

Signed-off-by: Chris Hofstaedtler <zeha@xxxxxxxxxx>
Tested-by: Emanuele Rocca <ema@xxxxxxxxxx>

Looks good to me, FWIW.

---
 term-utils/setterm.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/term-utils/setterm.c b/term-utils/setterm.c
index 1bf9a5bb4..92bf75a46 100644
--- a/term-utils/setterm.c
+++ b/term-utils/setterm.c
@@ -846,7 +846,10 @@ static void tty_raw(struct termios
*saved_attributes, int *saved_fl)
 {
 	struct termios tattr;

-	fcntl(STDIN_FILENO, F_GETFL, saved_fl);
+	*saved_fl = fcntl(STDIN_FILENO, F_GETFL);
+	if (*saved_fl == -1) {
+		err(EXIT_FAILURE, _("fcntl failed"));
+	}
 	tcgetattr(STDIN_FILENO, saved_attributes);
 	fcntl(STDIN_FILENO, F_SETFL, O_NONBLOCK);
 	memcpy(&tattr, saved_attributes, sizeof(struct termios));
@@ -898,7 +901,7 @@ static int resizetty(void)
 	ssize_t rc;
 	struct winsize ws;
 	struct termios saved_attributes;
-	int saved_fl;
+	int saved_fl = 0;

 	if (!isatty(STDIN_FILENO))
 		errx(EXIT_FAILURE, _("stdin does not refer to a terminal"));



[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux