X-Git-Url: https://git.armaanb.net/?p=opendoas.git;a=blobdiff_plain;f=pam.c;fp=pam.c;h=f1aae2dd6d3070f8a41af7c3ce3d5eda00e1080e;hp=f8785bb1016be59c49c26e0f36378807f70689ca;hb=b5d211d5d75b031f70e12565e704e7a9c817df83;hpb=71b759e2542878de5c75a7101f2400cf35ec6299 diff --git a/pam.c b/pam.c index f8785bb..f1aae2d 100644 --- a/pam.c +++ b/pam.c @@ -226,7 +226,7 @@ close: exit(status); } -void +int pamauth(const char *user, const char *myname, int interactive, int nopass, int persist) { static const struct pam_conv conv = { @@ -245,7 +245,7 @@ pamauth(const char *user, const char *myname, int interactive, int nopass, int p #endif if (!user || !myname) - authfail(); + return(5); ret = pam_start(PAM_SERVICE_NAME, myname, &conv, &pamh); if (ret != PAM_SUCCESS) @@ -277,7 +277,7 @@ pamauth(const char *user, const char *myname, int interactive, int nopass, int p if (!nopass) { if (!interactive) - authfail(); + return(5); /* doas style prompt for pam */ char host[HOST_NAME_MAX + 1]; @@ -291,7 +291,7 @@ pamauth(const char *user, const char *myname, int interactive, int nopass, int p if (ret != PAM_SUCCESS) { pamcleanup(ret, sess, cred); syslog(LOG_AUTHPRIV | LOG_NOTICE, "failed auth for %s", myname); - authfail(); + return(5); } } @@ -304,7 +304,7 @@ pamauth(const char *user, const char *myname, int interactive, int nopass, int p if (ret != PAM_SUCCESS) { pamcleanup(ret, sess, cred); syslog(LOG_AUTHPRIV | LOG_NOTICE, "failed auth for %s", myname); - authfail(); + return(5); } /* set PAM_USER to the user we want to be */ @@ -346,4 +346,5 @@ pamauth(const char *user, const char *myname, int interactive, int nopass, int p } #endif watchsession(child, sess, cred); + return(0); }