]> xenbits.xensource.com Git - people/julieng/freebsd.git/commitdiff
when -n is passed to any pw subcommand it is always expected to be considered as
authorbapt <bapt@FreeBSD.org>
Tue, 28 Jul 2015 12:20:57 +0000 (12:20 +0000)
committerbapt <bapt@FreeBSD.org>
Tue, 28 Jul 2015 12:20:57 +0000 (12:20 +0000)
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

usr.sbin/pw/pw.c
usr.sbin/pw/tests/pw_userdel.sh

index 5ad2511aeb10eb173b880cac1f9345417c9557a8..3db427afe44baab7f6457647f30fcbea3ad6c461 100644 (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)
index 5ba87c258deaf57674a134ee2643ff01ce6fc514..1305cb74f8475920a895e3d1f77c9d9cd731b690 100755 (executable)
@@ -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
 }