* GNU General Public License for more details.
*/
-#if defined(__linux) || defined(__sun) /* needed for crypt(): */
+#if defined(__linux) || defined(__sun) /* needed for crypt(): */
#define _XOPEN_SOURCE
#define _XOPEN_SOURCE_EXTENDED 1
#endif
/*
* struct appdata: passed to the conversation function
*/
-
-struct appdata
-{
- const char *name;
- const char *pw;
+struct appdata {
+ const char *name;
+ const char *pw;
};
/*
* code, but we can't really support them with the existing client protocol
* anyway. the failure mode should be to deny access, in any case.
*/
-
static int conv(int num_msg, const struct pam_message **msg,
struct pam_response **resp, void *appdata_ptr)
{
- struct pam_response *temp_resp;
- struct appdata *data = appdata_ptr;
-
- if ((temp_resp = malloc(sizeof(struct pam_response[num_msg]))) == NULL)
- return PAM_CONV_ERR;
-
- while (num_msg--)
- {
- switch ((*msg)[num_msg].msg_style)
- {
- case PAM_PROMPT_ECHO_ON:
- temp_resp[num_msg].resp = strdup(data->name);
- break;
- case PAM_PROMPT_ECHO_OFF:
- temp_resp[num_msg].resp = strdup(data->pw);
- break;
- default:
- temp_resp[num_msg].resp = NULL;
+ struct pam_response *temp_resp;
+ struct appdata *data = appdata_ptr;
+
+ if ((temp_resp =
+ malloc(sizeof(struct pam_response[num_msg]))) == NULL)
+ return PAM_CONV_ERR;
+
+ while (num_msg--) {
+ switch ((*msg)[num_msg].msg_style) {
+ case PAM_PROMPT_ECHO_ON:
+ temp_resp[num_msg].resp = strdup(data->name);
+ break;
+ case PAM_PROMPT_ECHO_OFF:
+ temp_resp[num_msg].resp = strdup(data->pw);
+ break;
+ default:
+ temp_resp[num_msg].resp = NULL;
+ }
+ temp_resp[num_msg].resp_retcode = 0;
}
- temp_resp[num_msg].resp_retcode = 0;
- }
- *resp = temp_resp;
- return PAM_SUCCESS;
+ *resp = temp_resp;
+ return PAM_SUCCESS;
}
-#endif /* HAVE_PAM_START */
+#endif /* HAVE_PAM_START */
/*
* check that `pass' is the correct password for `uid'
* returns zero if no, nonzero if yes
*/
-
int validate_password(uid_t uid, const char *pass)
{
if (pass == NULL) {
- return(0);
+ return (0);
}
-
#ifdef HAVE_PAM_START
struct pam_conv pc;
struct appdata data;
if (pw == NULL) {
return retval;
}
-
#ifdef HAVE_PAM_START
#ifdef PAM_DATA_SILENT
data.name = pw->pw_name;
data.pw = pass;
if (pam_start("citadel", pw->pw_name, &pc, &ph) != PAM_SUCCESS)
- return(0);
+ return (0);
if ((i = pam_authenticate(ph, flags)) == PAM_SUCCESS) {
if ((i = pam_acct_mgmt(ph, flags)) == PAM_SUCCESS) {
crypted_pwd = pw->pw_passwd;
#ifdef HAVE_GETSPNAM
- if (pw == NULL) return(0);
- if (pw->pw_name == NULL) return(0);
+ if (pw == NULL)
+ return (0);
+ if (pw->pw_name == NULL)
+ return (0);
if ((sp = getspnam(pw->pw_name)) != NULL) {
crypted_pwd = sp->sp_pwdp;
}