Author: bapt Date: Sat Jul 4 15:56:59 2015 New Revision: 285137 URL: https://svnweb.freebsd.org/changeset/base/285137
Log: Fix validation of crypted password Small cleanups Modified: head/usr.sbin/pw/pw_user.c Modified: head/usr.sbin/pw/pw_user.c ============================================================================== --- head/usr.sbin/pw/pw_user.c Sat Jul 4 15:54:11 2015 (r285136) +++ head/usr.sbin/pw/pw_user.c Sat Jul 4 15:56:59 2015 (r285137) @@ -87,7 +87,7 @@ create_and_populate_homedir(int mode, st } static int -set_passwd(struct passwd *pwd, struct carg *arg, bool update) +set_passwd(struct passwd *pwd, bool update) { int b, istty; struct termios t, n; @@ -107,6 +107,7 @@ set_passwd(struct passwd *pwd, struct ca if (tcgetattr(conf.fd, &t) == -1) istty = 0; else { + n = t; n.c_lflag &= ~(ECHO); tcsetattr(conf.fd, TCSANOW, &n); printf("%s%spassword for user %s:", @@ -134,7 +135,7 @@ set_passwd(struct passwd *pwd, struct ca conf.fd); if (conf.precrypted) { if (strchr(line, ':') != NULL) - return EX_DATAERR; + errx(EX_DATAERR, "bad encrypted password"); pwd->pw_passwd = line; } else { lc = login_getpwclass(pwd); @@ -531,8 +532,7 @@ pw_user(int mode, char *name, long id, s warnx("WARNING: home `%s' is not a directory", pwd->pw_dir); } - if ((arg = getarg(args, 'w')) != NULL && - getarg(args, 'h') == NULL && getarg(args, 'H') == NULL) { + if ((arg = getarg(args, 'w')) != NULL && conf.fd == -1) { login_cap_t *lc; lc = login_getpwclass(pwd); @@ -591,7 +591,7 @@ pw_user(int mode, char *name, long id, s } if (conf.fd != -1) - edited = set_passwd(pwd, arg, mode == M_UPDATE); + edited = set_passwd(pwd, mode == M_UPDATE); /* * Special case: -N only displays & exits @@ -1004,8 +1004,7 @@ pw_password(struct userconf * cnf, struc /* * We give this information back to the user */ - if (getarg(args, 'h') == NULL && getarg(args, 'H') == NULL && - !conf.dryrun) { + if (conf.fd == -1 && !conf.dryrun) { if (isatty(STDOUT_FILENO)) printf("Password for '%s' is: ", user); printf("%s\n", pwbuf); _______________________________________________ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"