Index: src/backend/libpq/auth.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/libpq/auth.c,v retrieving revision 1.73 diff -u -r1.73 auth.c --- src/backend/libpq/auth.c 2002/02/19 19:49:09 1.73 +++ src/backend/libpq/auth.c 2002/02/22 04:30:12 @@ -748,65 +748,58 @@ else retval = pam_start(port->auth_arg, "pgsql@", &pam_passw_conv, &pamh); - if (retval != PAM_SUCCESS) - { - snprintf(PQerrormsg, PQERRORMSG_LENGTH, - "CheckPAMAuth: Failed to create PAM authenticator: '%s'\n", - pam_strerror(pamh, retval)); - fputs(PQerrormsg, stderr); - pqdebug("%s", PQerrormsg); - pam_passwd = NULL; /* Unset pam_passwd */ - return STATUS_ERROR; - } - if (retval == PAM_SUCCESS) retval = pam_set_item(pamh, PAM_USER, user); else { snprintf(PQerrormsg, PQERRORMSG_LENGTH, - "CheckPAMAuth: pam_set_item(PAM_USER) failed: '%s'\n", + "CheckPAMAuth: Failed to create PAM authenticator: '%s'\n", pam_strerror(pamh, retval)); fputs(PQerrormsg, stderr); pqdebug("%s", PQerrormsg); pam_passwd = NULL; /* Unset pam_passwd */ return STATUS_ERROR; } + if (retval == PAM_SUCCESS) retval = pam_set_item(pamh, PAM_CONV, &pam_passw_conv); else { snprintf(PQerrormsg, PQERRORMSG_LENGTH, - "CheckPAMAuth: pam_set_item(PAM_CONV) failed: '%s'\n", + "CheckPAMAuth: pam_set_item(PAM_USER) failed: '%s'\n", pam_strerror(pamh, retval)); fputs(PQerrormsg, stderr); pqdebug("%s", PQerrormsg); pam_passwd = NULL; /* Unset pam_passwd */ return STATUS_ERROR; } + if (retval == PAM_SUCCESS) retval = pam_authenticate(pamh, 0); else { snprintf(PQerrormsg, PQERRORMSG_LENGTH, - "CheckPAMAuth: pam_authenticate failed: '%s'\n", + "CheckPAMAuth: pam_set_item(PAM_CONV) failed: '%s'\n", pam_strerror(pamh, retval)); fputs(PQerrormsg, stderr); pqdebug("%s", PQerrormsg); pam_passwd = NULL; /* Unset pam_passwd */ return STATUS_ERROR; } + if (retval == PAM_SUCCESS) retval = pam_acct_mgmt(pamh, 0); else { snprintf(PQerrormsg, PQERRORMSG_LENGTH, - "CheckPAMAuth: pam_acct_mgmt failed: '%s'\n", + "CheckPAMAuth: pam_authenticate failed: '%s'\n", pam_strerror(pamh, retval)); fputs(PQerrormsg, stderr); pqdebug("%s", PQerrormsg); pam_passwd = NULL; /* Unset pam_passwd */ return STATUS_ERROR; } + if (retval == PAM_SUCCESS) { retval = pam_end(pamh, retval); @@ -824,7 +817,15 @@ return (retval == PAM_SUCCESS ? STATUS_OK : STATUS_ERROR); } else + { + snprintf(PQerrormsg, PQERRORMSG_LENGTH, + "CheckPAMAuth: pam_acct_mgmt failed: '%s'\n", + pam_strerror(pamh, retval)); + fputs(PQerrormsg, stderr); + pqdebug("%s", PQerrormsg); + pam_passwd = NULL; /* Unset pam_passwd */ return STATUS_ERROR; + } } #endif /* USE_PAM */