]> granicus.if.org Git - linux-pam/commitdiff
Relevant BUGIDs: debian #326407
authorThorsten Kukuk <kukuk@thkukuk.de>
Mon, 24 Nov 2008 14:13:04 +0000 (14:13 +0000)
committerThorsten Kukuk <kukuk@thkukuk.de>
Mon, 24 Nov 2008 14:13:04 +0000 (14:13 +0000)
Purpose of commit: new testcase

Commit summary:
---------------

User entries with "|" don't work as expected.

2008-11-24  Thorsten Kukuk  <kukuk@thkukuk.de>

        * xtests/Makefile.am: Add pam_time1 tests.
        * xtests/tst-pam_time1.c: New test case.
        * xtests/tst-pam_time1.pamd: New.
        * xtests/time.conf: New.
        * xtests/run-xtests.sh: Copy time.conf.

ChangeLog
xtests/.cvsignore
xtests/Makefile.am
xtests/run-xtests.sh
xtests/time.conf [new file with mode: 0644]
xtests/tst-pam_time1.c [new file with mode: 0644]
xtests/tst-pam_time1.pamd [new file with mode: 0644]

index f86b86d599d19f52cbb2d8f1e33ff641f16c8b26..a91eb2d566d774748372d0da151d16ae23f89aa8 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2008-11-24  Thorsten Kukuk  <kukuk@thkukuk.de>
+
+       * xtests/Makefile.am: Add pam_time1 tests.
+       * xtests/tst-pam_time1.c: New test case.
+       * xtests/tst-pam_time1.pamd: New.
+       * xtests/time.conf: New.
+       * xtests/run-xtests.sh: Copy time.conf.
+
 2008-11-24  Tomas Mraz <t8m@centrum.cz>
 
        * libpam/pam_handlers.c (_pam_parse_conf_file): '-' at
index cc96e8c780de09e730bc0d1850e785e1565e7e07..4533b2490bde190e217b80053091ba20789bb0cd 100644 (file)
@@ -22,3 +22,4 @@ tst-pam_group1
 tst-pam_authfail
 tst-pam_authsucceed
 tst-pam_pwhistory1
+tst-pam_time1
index 620c61d1f0cd4a831f29c121f6e69e412c3a78a3..30ba27357f93f6a80adb6b32c7dea616710f902c 100644 (file)
@@ -29,7 +29,8 @@ EXTRA_DIST = run-xtests.sh tst-pam_dispatch1.pamd tst-pam_dispatch2.pamd \
        tst-pam_substack4.pamd tst-pam_substack4a.pamd tst-pam_substack4.sh \
        tst-pam_substack5.pamd tst-pam_substack5a.pamd tst-pam_substack5.sh \
        tst-pam_assemble_line1.pamd tst-pam_assemble_line1.sh \
-       tst-pam_pwhistory1.pamd tst-pam_pwhistory1.sh
+       tst-pam_pwhistory1.pamd tst-pam_pwhistory1.sh \
+       tst-pam_time1.pamd
 
 XTESTS = tst-pam_dispatch1 tst-pam_dispatch2 tst-pam_dispatch3 \
        tst-pam_dispatch4 tst-pam_dispatch5 \
@@ -38,7 +39,7 @@ XTESTS = tst-pam_dispatch1 tst-pam_dispatch2 tst-pam_dispatch3 \
        tst-pam_access1 tst-pam_access2 tst-pam_access3 \
        tst-pam_access4 tst-pam_limits1 tst-pam_succeed_if1 \
        tst-pam_group1 tst-pam_authfail tst-pam_authsucceed \
-       tst-pam_pwhistory1
+       tst-pam_pwhistory1 tst-pam_time1
 
 NOSRCTESTS = tst-pam_substack1 tst-pam_substack2 tst-pam_substack3 \
        tst-pam_substack4 tst-pam_substack5 tst-pam_assemble_line1
index b06685da7367136379e5e36acc9f1cf6746a6716..7343363034685967fa1aebfdfd1c0b7469bd1ddc 100755 (executable)
@@ -17,12 +17,10 @@ skiped=0
 all=0
 
 mkdir -p /etc/security
-cp /etc/security/access.conf /etc/security/access.conf-pam-xtests
-install -m 644 "${SRCDIR}"/access.conf /etc/security/access.conf
-cp /etc/security/group.conf /etc/security/group.conf-pam-xtests
-install -m 644 "${SRCDIR}"/group.conf /etc/security/group.conf
-cp /etc/security/limits.conf /etc/security/limits.conf-pam-xtests
-install -m 644 "${SRCDIR}"/limits.conf /etc/security/limits.conf
+for config in access.conf group.conf time.conf limits.conf ; do
+       cp /etc/security/$config /etc/security/$config-pam-xtests
+       install -m 644 "${SRCDIR}"/$config /etc/security/$config
+done
 mv /etc/security/opasswd /etc/security/opasswd-pam-xtests
 
 for testname in $XTESTS ; do
@@ -50,6 +48,7 @@ for testname in $XTESTS ; do
 done
 mv /etc/security/access.conf-pam-xtests /etc/security/access.conf
 mv /etc/security/group.conf-pam-xtests /etc/security/group.conf
+mv /etc/security/time.conf-pam-xtests /etc/security/time.conf
 mv /etc/security/limits.conf-pam-xtests /etc/security/limits.conf
 mv /etc/security/opasswd-pam-xtests /etc/security/opasswd
 if test "$failed" -ne 0; then
diff --git a/xtests/time.conf b/xtests/time.conf
new file mode 100644 (file)
index 0000000..518124c
--- /dev/null
@@ -0,0 +1,2 @@
+*;*;you|me;!Al0000-2400
+*;*;x|y;!Al0000-2400
diff --git a/xtests/tst-pam_time1.c b/xtests/tst-pam_time1.c
new file mode 100644 (file)
index 0000000..5161644
--- /dev/null
@@ -0,0 +1,114 @@
+/*
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, and the entire permission notice in its entirety,
+ *    including the disclaimer of warranties.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior
+ *    written permission.
+ *
+ * ALTERNATIVELY, this product may be distributed under the terms of
+ * the GNU Public License, in which case the provisions of the GPL are
+ * required INSTEAD OF the above restrictions.  (This clause is
+ * necessary due to a potential bad interaction between the GPL and
+ * the restrictions contained in a BSD-style copyright.)
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+  test case:
+
+  Check the following lines in time.conf:
+  *;*;you|me;!Al0000-2400
+  *;*;x|y;!Al0000-2400
+
+  User 'x' should not be able to login.
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <security/pam_appl.h>
+
+
+struct test_t {
+  const char *user;
+  int retval;
+};
+
+static struct test_t tests[] = {
+  {"xy", 0},
+  {"yx", 0},
+  {"me", 7},
+  {"you", 7},
+  {"x",  7},
+  {"y",  7},
+};
+
+static int num_tests = sizeof (tests) / sizeof (struct test_t);
+
+static struct pam_conv conv = {
+  NULL, NULL
+};
+
+int
+main(int argc, char *argv[])
+{
+  pam_handle_t *pamh = NULL;
+  int retval;
+  int debug = 0;
+  int i;
+
+  if (argc > 1 && strcmp (argv[1], "-d") == 0)
+    debug = 1;
+
+  for (i = 0; i < num_tests; i++)
+    {
+      retval = pam_start("tst-pam_time1", tests[i].user, &conv, &pamh);
+      if (retval != PAM_SUCCESS)
+       {
+         if (debug)
+           fprintf (stderr, "pam_time1: pam_start returned %d\n", retval);
+         return 1;
+       }
+
+      retval = pam_acct_mgmt (pamh, 0);
+      if (retval != tests[i].retval)
+       {
+         if (debug)
+           fprintf (stderr,
+                    "pam_time1: pam_acct_mgmt(%s) returned wrong value, %d, expected %d\n",
+                    tests[i].user, retval, tests[i].retval);
+         return 1;
+       }
+
+      retval = pam_end (pamh,retval);
+      if (retval != PAM_SUCCESS)
+       {
+         if (debug)
+           fprintf (stderr, "pam_time1: pam_end returned %d\n", retval);
+         return 1;
+       }
+    }
+  return 0;
+}
diff --git a/xtests/tst-pam_time1.pamd b/xtests/tst-pam_time1.pamd
new file mode 100644 (file)
index 0000000..cbbd23d
--- /dev/null
@@ -0,0 +1,5 @@
+#%PAM-1.0
+auth     required       pam_time.so
+account  required       pam_permit.so
+password required       pam_permit.so
+session  required       pam_permit.so