aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Gould <ted@gould.cx>2012-08-17 12:29:10 -0500
committerTed Gould <ted@gould.cx>2012-08-17 12:29:10 -0500
commitb7e10405b3fce70267bff420466d17d1731dc0d1 (patch)
tree1c46578abb45ed2b746a3a2c4ecfb289551d3db7
parent724c72a5b24d115d5298186c05f3a2b91f64e185 (diff)
downloadlibpam-x2go-b7e10405b3fce70267bff420466d17d1731dc0d1.tar.gz
libpam-x2go-b7e10405b3fce70267bff420466d17d1731dc0d1.tar.bz2
libpam-x2go-b7e10405b3fce70267bff420466d17d1731dc0d1.zip
Trying to get the values that we should know well
-rw-r--r--src/pam-freerdp.c31
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;
}