X-Git-Url: https://git.cameronkatri.com/pw-darwin.git/blobdiff_plain/a3bb22ec1c5286039b60e784591be154a2af7caf..6a151c16645f90b21f171a44661b109f06e9097e:/pw/pwupd.c diff --git a/pw/pwupd.c b/pw/pwupd.c index fef3662..84226a9 100644 --- a/pw/pwupd.c +++ b/pw/pwupd.c @@ -111,7 +111,8 @@ fmtpwentry(char *buf, struct passwd * pwd, int type) int l; char *pw; - pw = (pwd->pw_passwd == NULL || !*pwd->pw_passwd) ? "" : (type == PWF_MASTER) ? pwd->pw_passwd : "*"; + pw = (type == PWF_MASTER) ? + ((pwd->pw_passwd == NULL) ? "" : pwd->pw_passwd) : "*"; if (type == PWF_PASSWD) l = sprintf(buf, "%s:*:%ld:%ld:%s:%s:%s\n", @@ -166,6 +167,8 @@ pw_update(struct passwd * pwd, char const * user, int mode) else fmtpwentry(pwbuf, pwd, PWF_PASSWD); + if (l < 0) + l = 0; rc = fileupdate(getpwpath(_PASSWD), 0644, pwbuf, pfx, l, mode); if (rc == 0) { @@ -174,7 +177,7 @@ pw_update(struct passwd * pwd, char const * user, int mode) */ if (pwd != NULL) fmtpwentry(pwbuf, pwd, PWF_MASTER); - rc = fileupdate(getpwpath(_MASTERPASSWD), 0644, pwbuf, pfx, l, mode); + rc = fileupdate(getpwpath(_MASTERPASSWD), 0600, pwbuf, pfx, l, mode); if (rc == 0) { #ifdef HAVE_PWDB_U if (mode == UPD_DELETE || isrename)