exit(status);
}
-void
+int
pamauth(const char *user, const char *myname, int interactive, int nopass, int persist)
{
static const struct pam_conv conv = {
#endif
if (!user || !myname)
- errx(1, "Authentication failed");
+ return(5);
ret = pam_start(PAM_SERVICE_NAME, myname, &conv, &pamh);
if (ret != PAM_SUCCESS)
if (!nopass) {
if (!interactive)
- errx(1, "Authentication required");
+ return(5);
/* doas style prompt for pam */
char host[HOST_NAME_MAX + 1];
if (ret != PAM_SUCCESS) {
pamcleanup(ret, sess, cred);
syslog(LOG_AUTHPRIV | LOG_NOTICE, "failed auth for %s", myname);
- errx(1, "Authentication failed");
+ return(5);
}
}
if (ret != PAM_SUCCESS) {
pamcleanup(ret, sess, cred);
syslog(LOG_AUTHPRIV | LOG_NOTICE, "failed auth for %s", myname);
- errx(1, "Authentication failed");
+ return(5);
}
/* set PAM_USER to the user we want to be */
}
#endif
watchsession(child, sess, cred);
+ return(0);
}