pam: modules/pam_quota/pam_quota.c - removed freebsd bits - use pa...

baggins baggins at pld-linux.org
Thu May 10 18:36:04 CEST 2007


Author: baggins                      Date: Thu May 10 16:36:04 2007 GMT
Module: pam                           Tag: HEAD
---- Log message:
- removed freebsd bits
- use pam_syslog

---- Files affected:
pam/modules/pam_quota:
   pam_quota.c (1.1 -> 1.2) 

---- Diffs:

================================================================
Index: pam/modules/pam_quota/pam_quota.c
diff -u pam/modules/pam_quota/pam_quota.c:1.1 pam/modules/pam_quota/pam_quota.c:1.2
--- pam/modules/pam_quota/pam_quota.c:1.1	Thu May 10 18:28:09 2007
+++ pam/modules/pam_quota/pam_quota.c	Thu May 10 18:35:59 2007
@@ -4,7 +4,7 @@
  * A simple pam module to automagically set a quota to non-root users.
  *
  * Mon Feb  2 01:31:36 CET 2004, Andrea Leofreddi, <andrea.leofreddi at libero.it>
- *    first version. Runs on FreeBSD 5.2-RELEASE and Debian GNU/Linux 2.6.
+ *    first version.
  */
 
 #include <stdio.h>
@@ -19,18 +19,10 @@
 #include <sys/types.h>
 #include <pwd.h>
 
-#if defined(__FreeBSD__)
-#include <ufs/ufs/quota.h>
-#include <sys/param.h>
-#include <sys/mount.h>
-#include <sys/types.h>
-#include <security/pam_appl.h>
-#elif defined(__linux__)
 #include <mntent.h>
 #include <sys/quota.h>
 #include <sys/vfs.h>
 #include <sys/stat.h>
-#endif
 
 #define  PAM_SM_SESSION
 #include <security/pam_modules.h>
@@ -42,23 +34,7 @@
 	struct dqblk q;	/* quota data */
 };
 
-/* logs pam_quota activities */
-static void _pam_log(int prio, const char *fmt, ...) {
-		va_list ap;
-
-		va_start(ap, fmt);
-
-		vfprintf(stderr, fmt, ap);
-		openlog("pam_quota", LOG_PID, LOG_AUTHPRIV);
-		vsyslog(prio, fmt, ap);
-
-		va_end(ap);
-
-		closelog();
-}
-
-static char *fs_from_home(const char *home) {
-#if defined(__linux__)
+static char *fs_from_home(pam_handle_t *pamh, const char *home) {
 	struct stat homestat, devstat;
 	struct mntent *mnt;
 	char *fs = 0;
@@ -66,13 +42,13 @@
 
 	/* open mtab */
 	if(!(f = setmntent("/etc/mtab", "r"))) {
-		_pam_log(LOG_ERR, "unable to open mtab\n");
+		pam_syslog(pamh, LOG_ERR, "unable to open mtab\n");
 		return 0;
 	}
 
 	/* do a stat on user home directory */
 	if(stat(home, &homestat) < 0) {
-		_pam_log(LOG_ERR, "unable to stat user home directory\n");
+		pam_syslog(pamh, LOG_ERR, "unable to stat user home directory\n");
 		return 0;
 	}
 
@@ -90,17 +66,6 @@
 	endmntent(f);
 
 	return fs;
-#elif defined(__FreeBSD__)
-	struct statfs homestat;
-
-	/* do a statfs on home */
-	if(statfs(home, &homestat) < 0) {
-		_pam_log(LOG_ERR, "unable to stat user home directory\n");
-		return 0;
-	}
-
-	return strdup(homestat.f_mntonname);
-#endif
 }
 
 PAM_EXTERN int pam_sm_open_session(pam_handle_t *pamh, int flags, int argc, const char **argv) {
@@ -116,7 +81,7 @@
 	/* parse line arguments */
 	for(i = 0; i < argc; ++i) {
 		if(!(argument = strdup(argv[i]))) {
-			_pam_log(LOG_ERR, "insufficient memory");
+			pam_syslog(pamh, LOG_ERR, "insufficient memory");
 			return PAM_SESSION_ERR;
 		}
 
@@ -132,25 +97,25 @@
 
 #define CHECK_AND_SET(x)		!strcmp(argument, #x) && (m = 1) && (conf.q.dqb_##x = atoi(value)) < 0
 			if(CHECK_AND_SET(bhardlimit)) {
-				_pam_log(LOG_ERR, "bhardlimit argument must be greater or equal 0");
+				pam_syslog(pamh, LOG_ERR, "bhardlimit argument must be greater or equal 0");
 				err = 1;
 			} else if(CHECK_AND_SET(bsoftlimit)) {
-				_pam_log(LOG_ERR, "bsoftlimit argument must be greater or equal 0");
+				pam_syslog(pamh, LOG_ERR, "bsoftlimit argument must be greater or equal 0");
 				err = 1;
 			} else if(CHECK_AND_SET(ihardlimit)) {
-				_pam_log(LOG_ERR, "ihardlimit argument must be greater or equal 0");
+				pam_syslog(pamh, LOG_ERR, "ihardlimit argument must be greater or equal 0");
 				err = 1;
 			} else if(CHECK_AND_SET(isoftlimit)) {
-				_pam_log(LOG_ERR, "isoftlimit argument must be greater or equal 0");
+				pam_syslog(pamh, LOG_ERR, "isoftlimit argument must be greater or equal 0");
 				err = 1;
 			} else if(CHECK_AND_SET(itime)) {
-				_pam_log(LOG_ERR, "itime argument must be greater or equal 0");
+				pam_syslog(pamh, LOG_ERR, "itime argument must be greater or equal 0");
 				err = 1;
 			} else if(CHECK_AND_SET(btime)) {
-				_pam_log(LOG_ERR, "btime argument must be greater or equal 0");
+				pam_syslog(pamh, LOG_ERR, "btime argument must be greater or equal 0");
 				err = 1;
 			} else if(!m) {
-				_pam_log(LOG_ERR, "invalid argument: %s\n", argument);
+				pam_syslog(pamh, LOG_ERR, "invalid argument: %s\n", argument);
 				err = 1;
 			}
 		} else {
@@ -158,7 +123,7 @@
 			if(!strcmp(argument, "debug"))
 				conf.flags ^= PAM_QUOTE_DEBUG;
 			else {
-				_pam_log(LOG_ERR, "invalid argument: %s\n", argument);
+				pam_syslog(pamh, LOG_ERR, "invalid argument: %s\n", argument);
 				err = 1;
 			}
 		}
@@ -171,27 +136,23 @@
 	
 	/* get username */
 	if(pam_get_item(pamh, PAM_USER, (const void **)&username) != PAM_SUCCESS) {
-		_pam_log(LOG_ERR, "unknown user\n");
+		pam_syslog(pamh, LOG_ERR, "unknown user\n");
 		return PAM_USER_UNKNOWN;
 	}
 
 	/* get user's home directory */
 	if(!(pwd = getpwnam(username))) {
-		_pam_log(LOG_ERR, "unable to get user home directory\n");
+		pam_syslog(pamh, LOG_ERR, "unable to get user home directory\n");
 		return PAM_USER_UNKNOWN;
 	}
 
 	/* get home filesystem name */
-	if(!(fs = fs_from_home(pwd->pw_dir)))
+	if(!(fs = fs_from_home(pamh, pwd->pw_dir)))
 		return PAM_SESSION_ERR;
 
 	/* apply quota */
-#if defined(__FreeBSD__)
-	if(pwd->pw_uid && quotactl(fs, QCMD(Q_SETQUOTA, USRQUOTA), pwd->pw_uid, &conf.q) < 0) {
-#elif defined(__linux__)
 	if(pwd->pw_uid && quotactl(QCMD(Q_SETQUOTA, USRQUOTA), fs, pwd->pw_uid, (caddr_t)&conf.q) < 0) {
-#endif
-		_pam_log(LOG_ERR, "unable to set quota\n");
+		pam_syslog(pamh, LOG_ERR, "unable to set quota\n");
 		return PAM_SESSION_ERR;
 	}
 
@@ -207,22 +168,22 @@
 /* other not supported groups */
 
 PAM_EXTERN int pam_sm_authenticate(pam_handle_t *pamh, int flags, int argc, const char **argv) {
-	_pam_log(LOG_ERR, "authentication management group is not supported by this module");
+	pam_syslog(pamh, LOG_ERR, "authentication management group is not supported by this module");
 	return PAM_SERVICE_ERR;
 }
 
 PAM_EXTERN int pam_sm_setcred(pam_handle_t *pamh, int flags, int argc, const char **argv) {
-	_pam_log(LOG_ERR, "authentication management group is not supported by this module");
+	pam_syslog(pamh, LOG_ERR, "authentication management group is not supported by this module");
 	return PAM_SERVICE_ERR;
 }
 
 PAM_EXTERN int pam_sm_acct_mgmt(pam_handle_t *pamh, int flags, int argc, const char **argv) {
-	_pam_log(LOG_ERR, "account management group is not supported by this module");
+	pam_syslog(pamh, LOG_ERR, "account management group is not supported by this module");
 	return PAM_SERVICE_ERR;
 }
 
 PAM_EXTERN int pam_sm_chauthtok(pam_handle_t *pamh, int flags, int argc, const char **argv) {
-	_pam_log(LOG_ERR, "password management group is not unsupported by this module");
+	pam_syslog(pamh, LOG_ERR, "password management group is not unsupported by this module");
 	return PAM_SERVICE_ERR;
 }
 
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/pam/modules/pam_quota/pam_quota.c?r1=1.1&r2=1.2&f=u



More information about the pld-cvs-commit mailing list