ping On 2013-09-05 Thu 14:48 PM |, Todd C. Miller wrote: > I changed my mind and decided it is better to just move the chown > and chmod out of copydotfiles() and add an explicit check for skeldir > set to the empty string. Much as I would like to prettify the > user.c code it is a losing battle so here is a minimal diff. > > - todd > > Index: usr.sbin/user/user.c > =================================================================== > RCS file: /home/cvs/openbsd/src/usr.sbin/user/user.c,v > retrieving revision 1.95 > diff -u -r1.95 user.c > --- usr.sbin/user/user.c 2 Apr 2013 05:04:47 -0000 1.95 > +++ usr.sbin/user/user.c 5 Sep 2013 20:47:23 -0000 > @@ -290,6 +290,8 @@ > 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 @@ > (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 @@ > 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 &&
-- Craig Skinner | http://twitter.com/Craig_Skinner | http://linkd.in/yGqkv7