diff options
author | bapt <bapt@FreeBSD.org> | 2015-07-28 12:20:57 +0000 |
---|---|---|
committer | bapt <bapt@FreeBSD.org> | 2015-07-28 12:20:57 +0000 |
commit | 6a2604d87526baf5ee286d62d014c0afee6f8e9d (patch) | |
tree | ce68798916e85bee61335b14a69c8e9ece61478f /usr.sbin/pw | |
parent | 708e81ab605491cabb2679145103182543685426 (diff) | |
download | FreeBSD-src-6a2604d87526baf5ee286d62d014c0afee6f8e9d.zip FreeBSD-src-6a2604d87526baf5ee286d62d014c0afee6f8e9d.tar.gz |
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
Diffstat (limited to 'usr.sbin/pw')
-rw-r--r-- | usr.sbin/pw/pw.c | 9 | ||||
-rwxr-xr-x | usr.sbin/pw/tests/pw_userdel.sh | 10 |
2 files changed, 11 insertions, 8 deletions
diff --git a/usr.sbin/pw/pw.c b/usr.sbin/pw/pw.c index 5ad2511..3db427a 100644 --- a/usr.sbin/pw/pw.c +++ b/usr.sbin/pw/pw.c @@ -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) diff --git a/usr.sbin/pw/tests/pw_userdel.sh b/usr.sbin/pw/tests/pw_userdel.sh index 5ba87c2..1305cb7 100755 --- a/usr.sbin/pw/tests/pw_userdel.sh +++ b/usr.sbin/pw/tests/pw_userdel.sh @@ -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 } |