diff options
author | Ted Gould <ted@gould.cx> | 2012-08-17 12:29:10 -0500 |
---|---|---|
committer | Ted Gould <ted@gould.cx> | 2012-08-17 12:29:10 -0500 |
commit | b7e10405b3fce70267bff420466d17d1731dc0d1 (patch) | |
tree | 1c46578abb45ed2b746a3a2c4ecfb289551d3db7 /src | |
parent | 724c72a5b24d115d5298186c05f3a2b91f64e185 (diff) | |
download | libpam-x2go-b7e10405b3fce70267bff420466d17d1731dc0d1.tar.gz libpam-x2go-b7e10405b3fce70267bff420466d17d1731dc0d1.tar.bz2 libpam-x2go-b7e10405b3fce70267bff420466d17d1731dc0d1.zip |
Trying to get the values that we should know well
Diffstat (limited to 'src')
-rw-r--r-- | src/pam-freerdp.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/pam-freerdp.c b/src/pam-freerdp.c index 539cd0d..1858baf 100644 --- a/src/pam-freerdp.c +++ b/src/pam-freerdp.c @@ -1,3 +1,5 @@ +#include <stdlib.h> + #include <security/pam_modules.h> #include <security/pam_modutil.h> @@ -6,6 +8,35 @@ PAM_EXTERN int pam_sm_authenticate (pam_handle_t *pamh, int flags, int argc, const char **argv) { + const char * username = NULL; + const char * password = NULL; + const char * ruser = NULL; + const char * rhost = NULL; + //const char * rdomain = NULL; + + if (pam_get_item(pamh, PAM_USER, (const void **)&username) != PAM_SUCCESS || username == NULL) { + /* If we don't have a local username then bah, we don't want + to deal with this and we're going to fail. This means that + the pam-local-account failed. + + NOTE: We're not using pam_get_user() here because we don't want + to prompt, we want to only work in the case where the username is + built for us. */ + return PAM_AUTH_ERR; + } + + if (pam_get_item(pamh, PAM_RUSER, (const void **)&ruser) != PAM_SUCCESS || ruser == NULL) { + return PAM_AUTH_ERR; + } + + if (pam_get_item(pamh, PAM_RHOST, (const void **)&rhost) != PAM_SUCCESS || rhost == NULL) { + return PAM_AUTH_ERR; + } + + if (pam_get_item(pamh, PAM_AUTHTOK, (const void **)&password) != PAM_SUCCESS || password == NULL) { + return PAM_AUTH_ERR; + } + return PAM_IGNORE; } |