Date: Tue, 8 Sep 2020 12:38:35 +0000 (UTC) From: Mark Johnston <markj@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org Subject: svn commit: r365454 - stable/12/usr.sbin/pw Message-ID: <202009081238.088CcZll058328@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: markj Date: Tue Sep 8 12:38:34 2020 New Revision: 365454 URL: https://svnweb.freebsd.org/changeset/base/365454 Log: MFC r365043-r365046: pw: Coverity fixes. Modified: stable/12/usr.sbin/pw/pw_group.c stable/12/usr.sbin/pw/pw_user.c stable/12/usr.sbin/pw/rm_r.c stable/12/usr.sbin/pw/strtounum.c Directory Properties: stable/12/ (props changed) Modified: stable/12/usr.sbin/pw/pw_group.c ============================================================================== --- stable/12/usr.sbin/pw/pw_group.c Tue Sep 8 12:37:46 2020 (r365453) +++ stable/12/usr.sbin/pw/pw_group.c Tue Sep 8 12:38:34 2020 (r365454) @@ -66,13 +66,18 @@ grp_set_passwd(struct group *grp, bool update, int fd, } 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 */ Modified: stable/12/usr.sbin/pw/pw_user.c ============================================================================== --- stable/12/usr.sbin/pw/pw_user.c Tue Sep 8 12:37:46 2020 (r365453) +++ stable/12/usr.sbin/pw/pw_user.c Tue Sep 8 12:38:34 2020 (r365454) @@ -712,24 +712,24 @@ rmopie(char const * name) { char tmp[1014]; FILE *fp; - int fd; size_t len; - off_t atofs = 0; - + long atofs; + int fd; + if ((fd = openat(conf.rootfd, "etc/opiekeys", O_RDWR)) == -1) return; fp = fdopen(fd, "r+"); len = strlen(name); - while (fgets(tmp, sizeof(tmp), fp) != NULL) { + for (atofs = 0; fgets(tmp, sizeof(tmp), fp) != NULL && atofs >= 0; + atofs = ftell(fp)) { if (strncmp(name, tmp, len) == 0 && tmp[len]==' ') { /* Comment username out */ if (fseek(fp, atofs, SEEK_SET) == 0) fwrite("#", 1, 1, fp); break; } - atofs = ftell(fp); } /* * If we got an error of any sort, don't update! Modified: stable/12/usr.sbin/pw/rm_r.c ============================================================================== --- stable/12/usr.sbin/pw/rm_r.c Tue Sep 8 12:37:46 2020 (r365453) +++ stable/12/usr.sbin/pw/rm_r.c Tue Sep 8 12:38:34 2020 (r365454) @@ -57,6 +57,10 @@ rm_r(int rootfd, const char *path, uid_t uid) } d = fdopendir(dirfd); + if (d == NULL) { + (void)close(dirfd); + return; + } while ((e = readdir(d)) != NULL) { if (strcmp(e->d_name, ".") == 0 || strcmp(e->d_name, "..") == 0) continue; Modified: stable/12/usr.sbin/pw/strtounum.c ============================================================================== --- stable/12/usr.sbin/pw/strtounum.c Tue Sep 8 12:37:46 2020 (r365453) +++ stable/12/usr.sbin/pw/strtounum.c Tue Sep 8 12:38:34 2020 (r365454) @@ -44,28 +44,24 @@ strtounum(const char * __restrict np, uintmax_t minval *errpp = NULL; if (minval > maxval) { errno = EINVAL; - if (errpp != NULL) - *errpp = "invalid"; + *errpp = "invalid"; return (0); } errno = 0; ret = strtoumax(np, &endp, 10); if (endp == np || *endp != '\0') { errno = EINVAL; - if (errpp != NULL) - *errpp = "invalid"; + *errpp = "invalid"; return (0); } if (ret < minval) { errno = ERANGE; - if (errpp != NULL) - *errpp = "too small"; + *errpp = "too small"; return (0); } if (errno == ERANGE || ret > maxval) { errno = ERANGE; - if (errpp != NULL) - *errpp = "too large"; + *errpp = "too large"; return (0); } return (ret);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202009081238.088CcZll058328>