Allow negative numbers in -u and -g options

PR:		196514
MFC after:	1 week
This commit is contained in:
bapt 2015-01-24 19:13:03 +00:00
parent 2e062600fe
commit d39bfa5fd5
5 changed files with 50 additions and 3 deletions

View File

@ -68,7 +68,11 @@ pw_group(struct userconf * cnf, int mode, struct cargs * args)
}; };
if (a_gid != NULL) { if (a_gid != NULL) {
if (strspn(a_gid->val, "0123456789") != strlen(a_gid->val)) const char *teststr;
teststr = a_gid->val;
if (*teststr == '-')
teststr++;
if (strspn(teststr, "0123456789") != strlen(teststr))
errx(EX_USAGE, "-g expects a number"); errx(EX_USAGE, "-g expects a number");
} }

View File

@ -322,7 +322,10 @@ pw_user(struct userconf * cnf, int mode, struct cargs * args)
a_name = NULL; a_name = NULL;
} }
} else { } else {
if (strspn(a_uid->val, "0123456789") != strlen(a_uid->val)) const char *teststr = a_uid->val;
if (*teststr == '-')
teststr++;
if (strspn(teststr, "0123456789") != strlen(teststr))
errx(EX_USAGE, "-u expects a number"); errx(EX_USAGE, "-u expects a number");
} }

View File

@ -9,9 +9,11 @@ ATF_TESTS_SH= pw_etcdir \
pw_lock \ pw_lock \
pw_groupdel \ pw_groupdel \
pw_groupmod \ pw_groupmod \
pw_groupshow \
pw_useradd \ pw_useradd \
pw_userdel \ pw_userdel \
pw_usermod pw_usermod \
pw_usershow
.for tp in ${ATF_TESTS_SH} .for tp in ${ATF_TESTS_SH}
TEST_METADATA.${tp}+= required_user="root" TEST_METADATA.${tp}+= required_user="root"

View File

@ -0,0 +1,19 @@
# $FreeBSD$
# Import helper functions
. $(atf_get_srcdir)/helper_functions.shin
# Test negative uid are still valid
# PR: 196514
atf_test_case show_group_with_negative_number
show_group_with_negative_number_body() {
populate_etc_skel
atf_check -s exit:0 \
-o inline:"wheel:*:0:root\n" \
${PW} groupshow -n wheel -g -1
}
atf_init_test_cases() {
atf_add_test_case show_group_with_negative_number
}

View File

@ -0,0 +1,19 @@
# $FreeBSD$
# Import helper functions
. $(atf_get_srcdir)/helper_functions.shin
# Test negative uid are still valid
# PR: 196514
atf_test_case show_user_with_negative_number
show_user_with_negative_number_body() {
populate_etc_skel
atf_check -s exit:0 \
-o inline:"root:*:0:0::0:0:Charlie &:/root:/bin/csh\n" \
${PW} usershow -n root -u -1
}
atf_init_test_cases() {
atf_add_test_case show_user_with_negative_number
}