Lines 22-36
Link Here
|
22 |
good_name(const char *name) |
22 |
good_name(const char *name) |
23 |
{ |
23 |
{ |
24 |
/* |
24 |
/* |
25 |
* User/group names must match [a-z_][a-z0-9_-]* |
25 |
* User/group names must match [a-z_][a-z0-9_-.]* |
26 |
*/ |
26 |
*/ |
27 |
if (!*name || !((*name >= 'a' && *name <= 'z') || *name == '_')) |
27 |
if (!*name || !((*name >= 'a' && *name <= 'z') || *name == '_' || *name == '.')) |
28 |
return 0; |
28 |
return 0; |
29 |
|
29 |
|
30 |
while (*++name) { |
30 |
while (*++name) { |
31 |
if (!((*name >= 'a' && *name <= 'z') || |
31 |
if (!((*name >= 'a' && *name <= 'z') || |
32 |
(*name >= '0' && *name <= '9') || |
32 |
(*name >= '0' && *name <= '9') || |
33 |
*name == '_' || *name == '-' || |
33 |
*name == '_' || *name == '-' || *name == '.' || |
34 |
(*name == '$' && *(name+1) == NULL))) |
34 |
(*name == '$' && *(name+1) == NULL))) |
35 |
return 0; |
35 |
return 0; |
36 |
} |
36 |
} |