diff options
Diffstat (limited to 'toys/pending/groupadd.c')
-rw-r--r-- | toys/pending/groupadd.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/toys/pending/groupadd.c b/toys/pending/groupadd.c index 04c31ee5..7df0a5c3 100644 --- a/toys/pending/groupadd.c +++ b/toys/pending/groupadd.c @@ -92,11 +92,12 @@ void groupadd_main(void) update_password(SECURE_GROUP_PATH, grp->gr_name, entry); free(entry); } else { //new group to be created + char *s = *toys.optargs; + /* investigate the group to be created */ - if ((grp = getgrnam(*toys.optargs))) - error_exit("group '%s' is in use", *toys.optargs); - setlocale(LC_ALL, "C"); - is_valid_username(*toys.optargs); + if (getgrnam(s)) error_exit("'%s' in use", s); + if (s[strcspn(s, ":/\n")] || strlen(s) > LOGIN_NAME_MAX) + error_exit("bad name"); new_group(); } } |