svn commit: r285137 - head/usr.sbin/pw
Baptiste Daroussin
bapt at FreeBSD.org
Sat Jul 4 15:57:01 UTC 2015
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);
More information about the svn-src-all
mailing list