From 046ec8dbf4f038b3bf573ffc0215d86b38873909 Mon Sep 17 00:00:00 2001 From: Bastien Nocera Date: Tue, 28 Jan 2020 12:04:59 +0100 Subject: [PATCH] pam: Split off remote session code --- pam/pam_fprintd.c | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/pam/pam_fprintd.c b/pam/pam_fprintd.c index 9b5007b..82d191d 100644 --- a/pam/pam_fprintd.c +++ b/pam/pam_fprintd.c @@ -588,16 +588,10 @@ out: return ret; } -PAM_EXTERN int pam_sm_authenticate(pam_handle_t *pamh, int flags, int argc, - const char **argv) +static bool +is_remote (pam_handle_t *pamh) { const char *rhost = NULL; - const char *username; - unsigned i; - int r; - - bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); - bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); pam_get_item(pamh, PAM_RHOST, (const void **)(const void*) &rhost); @@ -607,9 +601,25 @@ PAM_EXTERN int pam_sm_authenticate(pam_handle_t *pamh, int flags, int argc, if (rhost != NULL && *rhost != '\0' && strcmp (rhost, "localhost") != 0) { - return PAM_AUTHINFO_UNAVAIL; + return true; } + return false; +} + +PAM_EXTERN int pam_sm_authenticate(pam_handle_t *pamh, int flags, int argc, + const char **argv) +{ + const char *username; + unsigned i; + int r; + + bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); + bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); + + if (is_remote (pamh)) + return PAM_AUTHINFO_UNAVAIL; + r = pam_get_user(pamh, &username, NULL); if (r != PAM_SUCCESS) return PAM_AUTHINFO_UNAVAIL;