Author: bapt
Date: Wed Nov 12 22:27:53 2014
New Revision: 274453
URL: https://svnweb.freebsd.org/changeset/base/274453

Log:
  Fix wrong message when using pw -V with a non existent directory
  Add a regression test about it
  
  PR:           194971
  Submitted by: Freddy DISSAUX <bugzi...@dsx.bsdsx.fr>

Added:
  head/usr.sbin/pw/tests/pw_etcdir.sh   (contents, props changed)
Modified:
  head/usr.sbin/pw/pw.c
  head/usr.sbin/pw/tests/Makefile

Modified: head/usr.sbin/pw/pw.c
==============================================================================
--- head/usr.sbin/pw/pw.c       Wed Nov 12 21:41:15 2014        (r274452)
+++ head/usr.sbin/pw/pw.c       Wed Nov 12 22:27:53 2014        (r274453)
@@ -98,6 +98,7 @@ main(int argc, char *argv[])
        int             which = -1;
        char            *config = NULL;
        struct userconf *cnf;
+       struct stat     st;
 
        static const char *opts[W_NUM][M_NUM] =
        {
@@ -143,6 +144,13 @@ main(int argc, char *argv[])
                        if (argv[1][1] == 'V') {
                                optarg = &argv[1][2];
                                if (*optarg == '\0') {
+                                       if (stat(argv[2], &st) != 0)
+                                               errx(EX_OSFILE, \
+                                                   "no such directory `%s'",
+                                                   argv[2]);
+                                       if (!S_ISDIR(st.st_mode))
+                                               errx(EX_OSFILE, "`%s' not a "
+                                                   "directory", argv[2]);
                                        optarg = argv[2];
                                        ++argv;
                                        --argc;

Modified: head/usr.sbin/pw/tests/Makefile
==============================================================================
--- head/usr.sbin/pw/tests/Makefile     Wed Nov 12 21:41:15 2014        
(r274452)
+++ head/usr.sbin/pw/tests/Makefile     Wed Nov 12 22:27:53 2014        
(r274453)
@@ -5,7 +5,7 @@ TESTSRC=        ${.CURDIR}/../../../contrib/net
 
 TESTSDIR=      ${TESTSBASE}/usr.sbin/pw
 
-ATF_TESTS_SH=  pw_delete pw_modify
+ATF_TESTS_SH=  pw_delete pw_modify pw_etcdir
 
 TEST_METADATA.pw_delete+=      required_user="root"
 TEST_METADATA.pw_modify+=      required_user="root"

Added: head/usr.sbin/pw/tests/pw_etcdir.sh
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/usr.sbin/pw/tests/pw_etcdir.sh Wed Nov 12 22:27:53 2014        
(r274453)
@@ -0,0 +1,18 @@
+# $FreeBSD$
+
+# When provide -V dir, dir must exists
+atf_test_case etcdir_must_exists
+etcdir_must_exists_head() {
+       atf_set "descr" "When provide -V dir, dir must exists"
+}
+
+etcdir_must_exists_body() {
+       local fakedir="/this_directory_does_not_exists"
+       atf_check -e inline:"pw: no such directory \`$fakedir'\n" \
+               -s exit:72 -x pw -V ${fakedir} usershow root
+}
+
+atf_init_test_cases() {
+       atf_add_test_case etcdir_must_exists
+}
+
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to