summaryrefslogtreecommitdiffstats
path: root/pw/pwupd.c
diff options
context:
space:
mode:
authorNeel Natu <neel@FreeBSD.org>2013-01-04 19:28:32 +0000
committerNeel Natu <neel@FreeBSD.org>2013-01-04 19:28:32 +0000
commit5946fff02d2b2e5d1fd3b8fa3634c3f5fbaf7e0b (patch)
tree505256c5f6496f779a54c7842e16886f87803e08 /pw/pwupd.c
parentea570e4ea7dc6c03c87457846a4509c32a8aa689 (diff)
parentf5d6684c8d9c572b686c5274162e3b17ae77091f (diff)
downloadpw-darwin-5946fff02d2b2e5d1fd3b8fa3634c3f5fbaf7e0b.tar.gz
pw-darwin-5946fff02d2b2e5d1fd3b8fa3634c3f5fbaf7e0b.tar.zst
pw-darwin-5946fff02d2b2e5d1fd3b8fa3634c3f5fbaf7e0b.zip
IFC @ r244983.
Diffstat (limited to 'pw/pwupd.c')
-rw-r--r--pw/pwupd.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/pw/pwupd.c b/pw/pwupd.c
index 4ab0f01..22662db 100644
--- a/pw/pwupd.c
+++ b/pw/pwupd.c
@@ -56,12 +56,10 @@ setpwdir(const char * dir)
{
if (dir == NULL)
return -1;
- else {
- char * d = malloc(strlen(dir)+1);
- if (d == NULL)
- return -1;
- pwpath = strcpy(d, dir);
- }
+ else
+ pwpath = strdup(dir);
+ if (pwpath == NULL)
+ return -1;
return 0;
}
@@ -148,7 +146,11 @@ pw_update(struct passwd * pwd, char const * user)
pw_fini();
err(1, "pw_copy()");
}
- if (pw_mkdb(user) == -1) {
+ /*
+ * in case of deletion of a user, the whole database
+ * needs to be regenerated
+ */
+ if (pw_mkdb(pw != NULL ? user : NULL) == -1) {
pw_fini();
err(1, "pw_mkdb()");
}