summaryrefslogtreecommitdiffstats
path: root/usr.sbin/pw
diff options
context:
space:
mode:
authorbapt <bapt@FreeBSD.org>2015-07-28 12:20:57 +0000
committerbapt <bapt@FreeBSD.org>2015-07-28 12:20:57 +0000
commit6a2604d87526baf5ee286d62d014c0afee6f8e9d (patch)
treece68798916e85bee61335b14a69c8e9ece61478f /usr.sbin/pw
parent708e81ab605491cabb2679145103182543685426 (diff)
downloadFreeBSD-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.c9
-rwxr-xr-xusr.sbin/pw/tests/pw_userdel.sh10
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
}
OpenPOWER on IntegriCloud