src/: Recommend --badname only if it is useful

(Review with -w (--ignore-all-space).)

Closes: <https://github.com/shadow-maint/shadow/issues/1067>
Reported-by: Anselm Schüler <mail@anselmschueler.com>
Signed-off-by: Alejandro Colomar <alx@kernel.org>
This commit is contained in:
Alejandro Colomar
2024-08-31 11:55:27 +02:00
committed by Serge Hallyn
parent 0663c91f80
commit 1f11a5ce5a
4 changed files with 38 additions and 15 deletions

View File

@@ -386,10 +386,16 @@ static int add_user (const char *name, uid_t uid, gid_t gid)
struct passwd pwent;
/* Check if this is a valid user name */
if (!is_valid_user_name (name)) {
fprintf (stderr,
_("%s: invalid user name '%s': use --badname to ignore\n"),
Prog, name);
if (!is_valid_user_name(name)) {
if (errno == EINVAL) {
fprintf(stderr,
_("%s: invalid user name '%s': use --badname to ignore\n"),
Prog, name);
} else {
fprintf(stderr,
_("%s: invalid user name '%s'\n"),
Prog, name);
}
return -1;
}

View File

@@ -471,9 +471,14 @@ static void check_pw_file (int *errors, bool *changed)
* Check for invalid usernames. --marekm
*/
if (!is_valid_user_name (pwd->pw_name)) {
printf (_("invalid user name '%s': use --badname to ignore\n"),
pwd->pw_name);
if (!is_valid_user_name(pwd->pw_name)) {
if (errno == EINVAL) {
printf(_("invalid user name '%s': use --badname to ignore\n"),
pwd->pw_name);
} else {
printf(_("invalid user name '%s'\n"),
pwd->pw_name);
}
*errors += 1;
}

View File

@@ -1523,10 +1523,16 @@ static void process_flags (int argc, char **argv)
}
user_name = argv[optind];
if (!is_valid_user_name (user_name)) {
fprintf (stderr,
_("%s: invalid user name '%s': use --badname to ignore\n"),
Prog, user_name);
if (!is_valid_user_name(user_name)) {
if (errno == EINVAL) {
fprintf(stderr,
_("%s: invalid user name '%s': use --badname to ignore\n"),
Prog, user_name);
} else {
fprintf(stderr,
_("%s: invalid user name '%s'\n"),
Prog, user_name);
}
#ifdef WITH_AUDIT
audit_logger (AUDIT_ADD_USER, Prog,
"adding user",

View File

@@ -1116,10 +1116,16 @@ process_flags(int argc, char **argv)
usage (E_SUCCESS);
/*@notreached@*/break;
case 'l':
if (!is_valid_user_name (optarg)) {
fprintf (stderr,
_("%s: invalid user name '%s': use --badname to ignore\n"),
Prog, optarg);
if (!is_valid_user_name(optarg)) {
if (errno == EINVAL) {
fprintf(stderr,
_("%s: invalid user name '%s': use --badname to ignore\n"),
Prog, optarg);
} else {
fprintf(stderr,
_("%s: invalid user name '%s'\n"),
Prog, optarg);
}
exit (E_BAD_ARG);
}
lflg = true;