diff --git a/ChangeLog b/ChangeLog index c48875ad..ef673345 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-12-15 Nicolas François + + * NEWS, src/gpasswd.c: Added support usernames with arbitrary + length. + 2008-11-27 Mike Frysinger * configure.in: Fix the "$enable_acct_tools_setuid" = "yes" test. diff --git a/NEWS b/NEWS index bbf004cb..470d4a0c 100644 --- a/NEWS +++ b/NEWS @@ -32,6 +32,7 @@ shadow-4.1.2.2 -> shadow-4.1.3 UNRELEASED * Added support for long options --add (-a), --delete (-d), --remove-password (-r), --restrict (-R), --administrators (-A), and --members (-M). + * Added support for usernames with arbitrary length. - groupadd * audit logging improvements. * Speedup (see "addition of users or groups" above). diff --git a/src/gpasswd.c b/src/gpasswd.c index 517008ed..926e41dc 100644 --- a/src/gpasswd.c +++ b/src/gpasswd.c @@ -211,26 +211,17 @@ static void fail_exit (int status) */ static bool is_valid_user_list (const char *users) { - const char *start, *end; - char username[32]; + const char *username, *end; bool is_valid = true; - size_t len; - for (start = users; (NULL != start) && ('\0' != *start); start = end) { - end = strchr (start, ','); + for (username = users; + (NULL != username) && ('\0' != *username); + username = end) { + end = strchr (username, ','); if (NULL != end) { - len = (size_t) (end - start); end++; - } else { - len = strlen (start); } - if (len > sizeof (username) - 1) { - len = sizeof (username) - 1; - } - strncpy (username, start, len); - username[len] = '\0'; - /* * This user must exist. */