summaryrefslogtreecommitdiffstats
path: root/lib/libpam
diff options
context:
space:
mode:
authormarkm <markm@FreeBSD.org>2001-08-10 19:10:43 +0000
committermarkm <markm@FreeBSD.org>2001-08-10 19:10:43 +0000
commit846c7876bea6fc8374c4ddff654342f3de18ec8a (patch)
tree61e50a06a14cd49151e5f49351304a71b43f73b3 /lib/libpam
parent6d1911d4af2dc6d1062ad217065e8a0caa8f56b6 (diff)
downloadFreeBSD-src-846c7876bea6fc8374c4ddff654342f3de18ec8a.zip
FreeBSD-src-846c7876bea6fc8374c4ddff654342f3de18ec8a.tar.gz
Module clean-up. Verbose logging, Overridable verbose error reporting,
FreeBSD pam_prompt() usage to simplify conversation function usage.
Diffstat (limited to 'lib/libpam')
-rw-r--r--lib/libpam/modules/pam_nologin/pam_nologin.c47
1 files changed, 21 insertions, 26 deletions
diff --git a/lib/libpam/modules/pam_nologin/pam_nologin.c b/lib/libpam/modules/pam_nologin/pam_nologin.c
index 4a56342..5b1e19f 100644
--- a/lib/libpam/modules/pam_nologin/pam_nologin.c
+++ b/lib/libpam/modules/pam_nologin/pam_nologin.c
@@ -46,10 +46,7 @@ PAM_EXTERN int
pam_sm_authenticate(pam_handle_t *pamh, int flags, int argc, const char **argv)
{
struct options options;
- struct pam_conv *conv;
- struct pam_message message, *pmessage;
- struct pam_response *resp;
- struct passwd *user_pwd;
+ struct passwd *pwd;
struct stat st;
int retval, fd;
const char *user;
@@ -71,14 +68,11 @@ pam_sm_authenticate(pam_handle_t *pamh, int flags, int argc, const char **argv)
PAM_LOG("Opened %s file", NOLOGIN);
- user_pwd = getpwnam(user);
- if (user_pwd && user_pwd->pw_uid == 0) {
- message.msg_style = PAM_TEXT_INFO;
+ pwd = getpwnam(user);
+ if (pwd && pwd->pw_uid == 0)
retval = PAM_SUCCESS;
- }
else {
- message.msg_style = PAM_ERROR_MSG;
- if (!user_pwd)
+ if (!pwd)
retval = PAM_USER_UNKNOWN;
else
retval = PAM_AUTH_ERR;
@@ -86,30 +80,31 @@ pam_sm_authenticate(pam_handle_t *pamh, int flags, int argc, const char **argv)
if (fstat(fd, &st) < 0)
PAM_RETURN(retval);
- message.msg = mtmp = malloc(st.st_size + 1);
- if (!message.msg)
- PAM_RETURN(retval);
-
- read(fd, mtmp, st.st_size);
- mtmp[st.st_size] = '\0';
-
- pmessage = &message;
- resp = NULL;
- pam_get_item(pamh, PAM_CONV, (const void **)&conv);
- conv->conv(1, (const struct pam_message **)&pmessage, &resp,
- conv->appdata_ptr);
- free(mtmp);
- if (resp)
- _pam_drop_reply(resp, 1);
+ mtmp = malloc(st.st_size + 1);
+ if (mtmp != NULL) {
+ read(fd, mtmp, st.st_size);
+ mtmp[st.st_size] = '\0';
+ pam_prompt(pamh, PAM_ERROR_MSG, mtmp, NULL);
+ free(mtmp);
+ }
+ if (retval != PAM_SUCCESS)
+ PAM_VERBOSE_ERROR("Administrator refusing you: %s", NOLOGIN);
+
PAM_RETURN(retval);
}
PAM_EXTERN int
pam_sm_setcred(pam_handle_t *pamh, int flags, int argc, const char **argv)
{
- return PAM_SUCCESS;
+ struct options options;
+
+ pam_std_option(&options, NULL, argc, argv);
+
+ PAM_LOG("Options processed");
+
+ PAM_RETURN(PAM_SUCCESS);
}
PAM_MODULE_ENTRY("pam_nologin");
OpenPOWER on IntegriCloud