summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--usr.sbin/user/user.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/usr.sbin/user/user.c b/usr.sbin/user/user.c
index b0a11d624af..0c7af2f88b8 100644
--- a/usr.sbin/user/user.c
+++ b/usr.sbin/user/user.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: user.c,v 1.96 2013/08/06 21:33:03 millert Exp $ */
+/* $OpenBSD: user.c,v 1.97 2013/09/10 20:53:09 millert Exp $ */
/* $NetBSD: user.c,v 1.69 2003/04/14 17:40:07 agc Exp $ */
/*
@@ -290,6 +290,8 @@ copydotfiles(char *skeldir, uid_t uid, gid_t gid, char *dir)
DIR *dirp;
int n;
+ if (*skeldir == '\0')
+ return 0;
if ((dirp = opendir(skeldir)) == NULL) {
warn("can't open source . files dir `%s'", skeldir);
return 0;
@@ -308,8 +310,6 @@ copydotfiles(char *skeldir, uid_t uid, gid_t gid, char *dir)
(void) asystem("cd %s && %s -rw -pe %s . %s",
skeldir, PAX, (verbose) ? "-v" : "", dir);
}
- (void) asystem("%s -R -P %u:%u %s", CHOWN, uid, gid, dir);
- (void) asystem("%s -R u+w %s", CHMOD, dir);
return n;
}
@@ -1177,6 +1177,9 @@ adduser(char *login_name, user_t *up)
err(EXIT_FAILURE, "can't mkdir `%s'", home);
}
(void) copydotfiles(up->u_skeldir, up->u_uid, gid, home);
+ (void) asystem("%s -R -P %u:%u %s", CHOWN, up->u_uid,
+ gid, home);
+ (void) asystem("%s -R u+w %s", CHMOD, home);
}
}
if (strcmp(up->u_primgrp, "=uid") == 0 &&