summaryrefslogtreecommitdiff
path: root/contrib/libpam/modules/pam_group/pam_group.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/libpam/modules/pam_group/pam_group.c')
-rw-r--r--contrib/libpam/modules/pam_group/pam_group.c41
1 files changed, 14 insertions, 27 deletions
diff --git a/contrib/libpam/modules/pam_group/pam_group.c b/contrib/libpam/modules/pam_group/pam_group.c
index 9e2cf885e9cf2..2d04119ad88ad 100644
--- a/contrib/libpam/modules/pam_group/pam_group.c
+++ b/contrib/libpam/modules/pam_group/pam_group.c
@@ -1,32 +1,17 @@
/* pam_group module */
/*
- * $Id: pam_group.c,v 1.7 1997/02/15 17:31:48 morgan Exp morgan $
+ * $Id: pam_group.c,v 1.3 2000/11/26 07:32:39 agmorgan Exp $
*
- * Written by Andrew Morgan <morgan@parc.power.net> 1996/7/6
- *
- * $Log: pam_group.c,v $
- * Revision 1.7 1997/02/15 17:31:48 morgan
- * time parsing more robust
- *
- * Revision 1.6 1997/01/04 21:57:49 morgan
- * fixed warning about setgroups not being defined
- *
- * Revision 1.5 1997/01/04 20:26:49 morgan
- * can be compiled with and without libpwdb. fixed buffer underwriting
- * pays attention to PAM_CRED flags(!)
- *
- * Revision 1.4 1996/12/01 02:54:37 morgan
- * mostly debugging now uses D(())
- *
- * Revision 1.3 1996/11/10 21:01:22 morgan
- * compatability and pam_get_user changes
+ * Written by Andrew Morgan <morgan@linux.kernel.org> 1996/7/6
*/
const static char rcsid[] =
-"$Id: pam_group.c,v 1.7 1997/02/15 17:31:48 morgan Exp morgan $;\n"
+"$Id: pam_group.c,v 1.3 2000/11/26 07:32:39 agmorgan Exp $;\n"
"Version 0.5 for Linux-PAM\n"
-"Copyright (c) Andrew G. Morgan 1996 <morgan@parc.power.net>\n";
+"Copyright (c) Andrew G. Morgan 1996 <morgan@linux.kernel.org>\n";
+
+#define _BSD_SOURCE
#include <sys/file.h>
#include <stdio.h>
@@ -38,17 +23,16 @@ const static char rcsid[] =
#include <syslog.h>
#include <string.h>
-#define __USE_BSD
#include <grp.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
-#ifdef WANT_PWDB
-#include <pwdb/pwdb_public.h>
+#ifdef DEFAULT_CONF_FILE
+# define PAM_GROUP_CONF DEFAULT_CONF_FILE /* from external define */
+#else
+# define PAM_GROUP_CONF "/etc/security/group.conf"
#endif
-
-#define PAM_GROUP_CONF CONFILE /* from external define */
#define PAM_GROUP_BUFLEN 1000
#define FIELD_SEPARATOR ';' /* this is new as of .02 */
@@ -137,6 +121,7 @@ static int read_field(int fd, char **buf, int *from, int *to)
_log_err("error reading " PAM_GROUP_CONF);
return -1;
} else if (!i) {
+ close(fd);
fd = -1; /* end of file reached */
} else
*to += i;
@@ -180,6 +165,8 @@ static int read_field(int fd, char **buf, int *from, int *to)
if ((*buf)[i+1] == '\n') {
shift_bytes(i + *buf, 2, *to - (i+2));
*to -= 2;
+ } else {
+ ++i; /* we don't escape non-newline characters */
}
break;
case '!':
@@ -260,7 +247,7 @@ static int logic_member(const char *string, int *at)
default:
if (isalpha(c) || c == '*' || isdigit(c) || c == '_'
- || c == '-' || c == '.') {
+ || c == '-' || c == '.' || c == '/') {
token = 1;
} else if (token) {
--to;