From abe4cfb72aae79bc01f624c9b75e5e2c048e17be Mon Sep 17 00:00:00 2001 From: Mark Johnston Date: Tue, 1 Sep 2020 15:14:13 +0000 Subject: pw: Fix terminal handling when setting a group password. Reported by: Coverity MFC after: 1 week Sponsored by: NetApp, Inc. Sponsored by: Klara, Inc. --- pw/pw_group.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/pw/pw_group.c b/pw/pw_group.c index dd65062..a294d4e 100644 --- a/pw/pw_group.c +++ b/pw/pw_group.c @@ -66,13 +66,18 @@ grp_set_passwd(struct group *grp, bool update, int fd, bool precrypted) } if ((istty = isatty(fd))) { - n = t; - /* Disable echo */ - n.c_lflag &= ~(ECHO); - tcsetattr(fd, TCSANOW, &n); - printf("%sassword for group %s:", update ? "New p" : "P", - grp->gr_name); - fflush(stdout); + if (tcgetattr(fd, &t) == -1) + istty = 0; + else { + n = t; + /* Disable echo */ + n.c_lflag &= ~(ECHO); + tcsetattr(fd, TCSANOW, &n); + printf("%sassword for group %s:", + update ? "New p" : "P", + grp->gr_name); + fflush(stdout); + } } b = read(fd, line, sizeof(line) - 1); if (istty) { /* Restore state */ -- cgit v1.2.3-56-ge451