Contents of /tags/mkinitrd-6_2_2/busybox/libbb/die_if_bad_username.c
Parent Directory | Revision Log
Revision 1005 -
(show annotations)
(download)
Sun May 30 12:33:03 2010 UTC (14 years, 4 months ago) by niro
File MIME type: text/plain
File size: 910 byte(s)
Sun May 30 12:33:03 2010 UTC (14 years, 4 months ago) by niro
File MIME type: text/plain
File size: 910 byte(s)
tagged 'mkinitrd-6_2_2'
1 | /* vi: set sw=4 ts=4: */ |
2 | /* |
3 | * Check user and group names for illegal characters |
4 | * |
5 | * Copyright (C) 2008 Tito Ragusa <farmatito@tiscali.it> |
6 | * |
7 | * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. |
8 | */ |
9 | |
10 | #include "libbb.h" |
11 | |
12 | /* To avoid problems, the username should consist only of |
13 | * letters, digits, underscores, periods, at signs and dashes, |
14 | * and not start with a dash (as defined by IEEE Std 1003.1-2001). |
15 | * For compatibility with Samba machine accounts $ is also supported |
16 | * at the end of the username. |
17 | */ |
18 | |
19 | void FAST_FUNC die_if_bad_username(const char *name) |
20 | { |
21 | goto skip; /* 1st char being dash isn't valid */ |
22 | do { |
23 | if (*name == '-') |
24 | continue; |
25 | skip: |
26 | if (isalnum(*name) |
27 | || *name == '_' |
28 | || *name == '.' |
29 | || *name == '@' |
30 | || (*name == '$' && !*(name + 1)) |
31 | ) { |
32 | continue; |
33 | } |
34 | bb_error_msg_and_die("illegal character '%c'", *name); |
35 | } while (*++name); |
36 | } |