passdb-pam.c revision 25757faf029c369a8318349dafe952e2358df1d8
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk Based on auth_pam.c from popa3d by Solar Designer <solar@openwall.com>.
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk You're allowed to do whatever you like with this software (including
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk re-distribution in source and/or binary form, with or without
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk modification), provided that credit is given where it is due and any
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk modified versions are marked as such. There's absolutely no warranty.
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#if !defined(_SECURITY_PAM_APPL_H) && !defined(LINUX_PAM)
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk/* Sun's PAM doesn't use const. we use a bit dirty hack to check it.
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk Originally it was just __sun__ check, but HP/UX also uses Sun's PAM
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk so I thought this might work better. */
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk/* Linux-PAM prior to 0.74 */
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk const char *user;
dff2cc5646d4437ab9e0cb1dcb59da65462a5938jeff.schenk const char *pass;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkstatic int pam_userpass_conv(int num_msg, linux_const struct pam_message **msg,
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk /* @UNSAFE */
dff2cc5646d4437ab9e0cb1dcb59da65462a5938jeff.schenk struct pam_userpass *userpass = (struct pam_userpass *) appdata_ptr;
const char *input;
char *output;
char flags;
return PAM_CONV_ERR;
return PAM_CONV_ERR;
return PAM_CONV_AGAIN;
return PAM_CONV_ERR;
char *string;
return PAM_CONV_ERR;
for (i = 0; i < num_msg; i++) {
case PAM_PROMPT_ECHO_ON:
case PAM_PROMPT_ECHO_OFF:
case PAM_ERROR_MSG:
case PAM_TEXT_INFO:
return PAM_CONV_ERR;
return PAM_SUCCESS;
char *item;
int status;
if (verbose) {
return status;
#ifdef HAVE_PAM_SETCRED
if (verbose) {
return status;
if (verbose) {
return status;
if (verbose) {
return status;
return PAM_SUCCESS;
static enum passdb_result
if (verbose) {
return PASSDB_RESULT_INTERNAL_FAILURE;
return PASSDB_RESULT_INTERNAL_FAILURE;
static void pam_deinit(void)