when -n is passed to any pw subcommand it is always expected to be considered as

a name so do not try to convert it to an id if it is a numeric value

PR:		31933
Reported by:	ted@impulse.net
Sponsored by:	gandi.net
This commit is contained in:
Baptiste Daroussin 2015-07-28 12:20:57 +00:00
parent 68d5f492de
commit 87bf5e9212
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=285948
2 changed files with 11 additions and 8 deletions

View File

@ -287,14 +287,7 @@ main(int argc, char *argv[])
errstr);
break;
case 'n':
if (strspn(optarg, "0123456789") != strlen(optarg)) {
name = optarg;
break;
}
id = strtonum(optarg, 0, LONG_MAX, &errstr);
if (errstr != NULL)
errx(EX_USAGE, "Bad id '%s': %s", optarg,
errstr);
name = optarg;
break;
case 'H':
if (conf.fd != -1)

View File

@ -50,8 +50,18 @@ delete_files_body() {
fi
}
atf_test_case delete_numeric_name
delete_numeric_name_body() {
populate_etc_skel
atf_check ${PW} useradd -n foo -u 4001
atf_check -e inline:"pw: no such user \`4001'\n" -s exit:67 \
${PW} userdel -n 4001
}
atf_init_test_cases() {
atf_add_test_case rmuser_seperate_group
atf_add_test_case user_do_not_try_to_delete_root_if_user_unknown
atf_add_test_case delete_files
atf_add_test_case delete_numeric_name
}