Subject: Re: useradd: spaces and $ in usernames
To: None <tech-userlevel@netbsd.org>
From: Hubert Feyrer <hubert.feyrer@informatik.fh-regensburg.de>
List: tech-userlevel
Date: 11/16/2001 01:26:31
On Fri, 16 Nov 2001, Hubert Feyrer wrote:
> The following patch works at least on 1.5.3_ALPHA, and I'd like to commit
> it if there are no major objections:
Here's an update that even handles creating, deleting, copying of
skel-files properly!
- Hubert
Index: user.c
===================================================================
RCS file: /cvsroot/basesrc/usr.sbin/user/user.c,v
retrieving revision 1.20.4.8
diff -u -r1.20.4.8 user.c
--- user.c 2001/02/26 18:01:17 1.20.4.8
+++ user.c 2001/11/16 00:20:49
@@ -243,7 +244,7 @@
(void) seteuid(uid);
/* we add the "|| true" to keep asystem() quiet if there is a non-zero exit status. */
- (void) asystem("%s -rf %s > /dev/null 2>&1 || true", RM, dir);
+ (void) asystem("%s -rf '%s' > /dev/null 2>&1 || true", RM, dir);
(void) seteuid(0);
if (rmdir(dir) < 0) {
warnx("Unable to remove all files in `%s'\n", dir);
@@ -385,11 +386,11 @@
if (n == 0) {
warnx("No \"dot\" initialisation files found");
} else {
- (void) asystem("cd %s; %s -rw -pe %s . %s",
+ (void) asystem("cd '%s'; %s -rw -pe %s . '%s'",
skeldir, PAX, (verbose) ? "-v" : "", dir);
}
- (void) asystem("%s -R -h %d:%d %s", CHOWN, uid, gid, dir);
- (void) asystem("%s -R u+w %s", CHMOD, dir);
+ (void) asystem("%s -R -h %d:%d '%s'", CHOWN, uid, gid, dir);
+ (void) asystem("%s -R u+w '%s'", CHMOD, dir);
return n;
}
@@ -619,7 +621,7 @@
char *cp;
for (cp = login ; *cp ; cp++) {
- if (!isalnum(*cp) && *cp != '.' && *cp != '_' && *cp != '-') {
+ if (*cp == ':' || *cp == '\'') {
return 0;
}
}
@@ -971,7 +973,7 @@
(void) pw_abort();
errx(EXIT_FAILURE, "home directory `%s' already exists", home);
} else {
- if (asystem("%s -p %s", MKDIR, home) != 0) {
+ if (asystem("%s -p '%s'", MKDIR, home) != 0) {
(void) close(ptmpfd);
(void) pw_abort();
err(EXIT_FAILURE, "can't mkdir `%s'", home);
@@ -1144,7 +1146,7 @@
}
if (up != NULL) {
if ((up->u_flags & F_MKDIR) &&
- asystem("%s %s %s", MV, homedir, pwp->pw_dir) != 0) {
+ asystem("%s '%s' '%s'", MV, homedir, pwp->pw_dir) != 0) {
(void) close(ptmpfd);
(void) pw_abort();
err(EXIT_FAILURE, "can't move `%s' to `%s'",
--
Want to get a clue on IPv6 but don't know where to start? Try this:
* Basics -> http://www.onlamp.com/pub/a/onlamp/2001/05/24/ipv6_tutorial.html
* Setup -> http://www.onlamp.com/pub/a/onlamp/2001/06/01/ipv6_tutorial.html
Of course with your #1 IPv6 ready operating system -> http://www.NetBSD.org/