diff options
author | joerg <joerg@FreeBSD.org> | 1996-12-11 15:10:47 +0000 |
---|---|---|
committer | joerg <joerg@FreeBSD.org> | 1996-12-11 15:10:47 +0000 |
commit | 8b50c9b074d5e402ca9c828d0498851de86b09f5 (patch) | |
tree | 5536a10a8a5f01c69658f7af7eb6641d6fac8080 /usr.sbin/pw/pw_user.c | |
parent | 778dd416a55a60ff4032c091fdbdec80cace1dac (diff) | |
download | FreeBSD-src-8b50c9b074d5e402ca9c828d0498851de86b09f5.zip FreeBSD-src-8b50c9b074d5e402ca9c828d0498851de86b09f5.tar.gz |
Update from David, reflecting Wolfram's wishes regarding limitation of
the allowable character set.
Submitted by: David Nugent
Diffstat (limited to 'usr.sbin/pw/pw_user.c')
-rw-r--r-- | usr.sbin/pw/pw_user.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/usr.sbin/pw/pw_user.c b/usr.sbin/pw/pw_user.c index d8a2c24..055f676 100644 --- a/usr.sbin/pw/pw_user.c +++ b/usr.sbin/pw/pw_user.c @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: pw_user.c,v 1.1.1.2 1996/12/09 23:55:10 joerg Exp $ + * $Id: pw_user.c,v 1.1.1.3 1996/12/10 23:59:02 joerg Exp $ */ #include <unistd.h> @@ -857,14 +857,17 @@ static char * pw_checkname(char *name, int gecos) { int l = 0; - char const *notch = gecos ? ":" : " :+-&#%$^()!@~*?<>=|\\/\""; + char const *notch = gecos ? ":" : " ,\t:+-&#%$^()!@~*?<>=|\\/\""; while (name[l]) { - if (strchr(notch, name[l]) != NULL || name[l] < ' ') - cmderr(EX_DATAERR, "invalid character `%c' in field\n", name[l]); + if (strchr(notch, name[l]) != NULL || name[l] < ' ' || name[l] > 126) + cmderr(EX_DATAERR, (name[l]<' ' || (unsigned char)name[l] > 126) + ? "invalid character `%c' in field\n" + : "invalid character 0x$02x in field\n", + name[l]); ++l; } - if (!gecos && l > 8) + if (!gecos && l > MAXLOGNAME) cmderr(EX_DATAERR, "name too long `%s'\n", name); return name; } |