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