diff options
author | brd <brd@FreeBSD.org> | 2014-10-02 19:53:37 +0000 |
---|---|---|
committer | brd <brd@FreeBSD.org> | 2014-10-02 19:53:37 +0000 |
commit | 1319daf6688fee426cae9267e4467a62398a4c14 (patch) | |
tree | 3b0e8e35fc181349f55bdf19bdd185cd6716313a /usr.sbin/pw | |
parent | 3f8a9f0ec1e26be6f9b95c487f3aca4c44a53128 (diff) | |
download | FreeBSD-src-1319daf6688fee426cae9267e4467a62398a4c14.zip FreeBSD-src-1319daf6688fee426cae9267e4467a62398a4c14.tar.gz |
- Add a test for bug 191427 where pw(8) will go into an infinite loop
Reviewed by: will
MFC after: 1 month
Diffstat (limited to 'usr.sbin/pw')
-rw-r--r-- | usr.sbin/pw/Makefile | 6 | ||||
-rw-r--r-- | usr.sbin/pw/tests/Makefile | 10 | ||||
-rw-r--r-- | usr.sbin/pw/tests/group | 3 | ||||
-rwxr-xr-x | usr.sbin/pw/tests/helper_functions.shin | 15 | ||||
-rw-r--r-- | usr.sbin/pw/tests/master.passwd | 4 | ||||
-rwxr-xr-x | usr.sbin/pw/tests/pw_delete.sh | 24 |
6 files changed, 62 insertions, 0 deletions
diff --git a/usr.sbin/pw/Makefile b/usr.sbin/pw/Makefile index eae0b87..8c5acf9 100644 --- a/usr.sbin/pw/Makefile +++ b/usr.sbin/pw/Makefile @@ -11,4 +11,10 @@ WARNS?= 2 DPADD= ${LIBCRYPT} ${LIBUTIL} LDADD= -lcrypt -lutil +.include <src.opts.mk> + +.if ${MK_TESTS} != "no" +SUBDIR+= tests +.endif + .include <bsd.prog.mk> diff --git a/usr.sbin/pw/tests/Makefile b/usr.sbin/pw/tests/Makefile new file mode 100644 index 0000000..577ea93 --- /dev/null +++ b/usr.sbin/pw/tests/Makefile @@ -0,0 +1,10 @@ +# $FreeBSD$ + +TESTSDIR= ${TESTSBASE}/usr.sbin/pw + +ATF_TESTS_SH= pw_delete + +FILES= group helper_functions.shin master.passwd +FILESDIR= ${TESTSDIR} + +.include <bsd.test.mk> diff --git a/usr.sbin/pw/tests/group b/usr.sbin/pw/tests/group new file mode 100644 index 0000000..620c588 --- /dev/null +++ b/usr.sbin/pw/tests/group @@ -0,0 +1,3 @@ +# $FreeBSD$ +# +wheel:*:0:root diff --git a/usr.sbin/pw/tests/helper_functions.shin b/usr.sbin/pw/tests/helper_functions.shin new file mode 100755 index 0000000..f87b1e7 --- /dev/null +++ b/usr.sbin/pw/tests/helper_functions.shin @@ -0,0 +1,15 @@ +# $FreeBSD$ + +# Workdir to run tests in +TESTDIR=$(atf_get_srcdir) + +# Populate the files pw needs to use into $HOME/etc +populate_etc_skel() { + cp ${TESTDIR}/master.passwd ${HOME} || \ + atf_fail "Populating master.passwd in ${HOME}" + cp ${TESTDIR}/group ${HOME} || atf_fail "Populating group in ${HOME}" + + # Generate the passwd file + pwd_mkdb -p -d ${HOME} ${HOME}/master.passwd || \ + atf_fail "generate passwd from master.passwd" +} diff --git a/usr.sbin/pw/tests/master.passwd b/usr.sbin/pw/tests/master.passwd new file mode 100644 index 0000000..f7dc837 --- /dev/null +++ b/usr.sbin/pw/tests/master.passwd @@ -0,0 +1,4 @@ +# $FreeBSD$ +# +root:*:0:0::0:0:Charlie &:/root:/bin/csh +toor:*:0:0::0:0:Bourne-again Superuser:/root: diff --git a/usr.sbin/pw/tests/pw_delete.sh b/usr.sbin/pw/tests/pw_delete.sh new file mode 100755 index 0000000..0636629 --- /dev/null +++ b/usr.sbin/pw/tests/pw_delete.sh @@ -0,0 +1,24 @@ +# $FreeBSD$ + +# Import helper functions +. $(atf_get_srcdir)/helper_functions.shin + +# Test that a user can be deleted when another user is part of this +# user's default group and does not go into an infinate loop. +# PR: 191427 +atf_test_case rmuser_seperate_group cleanup +rmuser_seperate_group_head() { + atf_set "timeout" "30" +} +rmuser_seperate_group_body() { + populate_etc_skel + pw -V ${HOME} useradd test || atf_fail "Creating test user" + pw -V ${HOME} groupmod test -M 'test,root' || \ + atf_fail "Modifying the group" + pw -V ${HOME} userdel test || atf_fail "delete the user" +} + + +atf_init_test_cases() { + atf_add_test_case rmuser_seperate_group +} |