--- shadow-4.1.4.3/libmisc/chkname.c 2012-08-17 17:13:31.794491492 +0400 +++ shadow-4.1.4.3/libmisc/chkname.c 2012-08-17 17:15:18.615751619 +0400 @@ -49,15 +49,20 @@ static bool is_valid_name (const char *name) { /* - * User/group names must match [a-z_][a-z0-9_-]*[$] + * User/group names must match [a-zA-Z_][a-zA-Z0-9_-]*[$] + * Allow user to use uppercase under his/her responsibility */ if (('\0' == *name) || - !((('a' <= *name) && ('z' >= *name)) || ('_' == *name))) { + !((('a' <= *name) && ('z' >= *name)) || + (('A' <= *name) && ('Z' >= *name)) || + ('_' == *name) + )) { return false; } while ('\0' != *++name) { if (!(( ('a' <= *name) && ('z' >= *name) ) || + ( ('A' <= *name) && ('Z' >= *name) ) || ( ('0' <= *name) && ('9' >= *name) ) || ('_' == *name) || ('-' == *name) ||