aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTed Gould <ted@gould.cx>2012-08-21 18:29:37 -0500
committerTed Gould <ted@gould.cx>2012-08-21 18:29:37 -0500
commitadc0f8165a106c3dfe52903726d94b695b6ab717 (patch)
tree446c8333e2c940004e00fabe5eabc36e87c74717 /src
parentdebd3a94955e7a64ec3430340ea20efdaa927636 (diff)
downloadlibpam-x2go-adc0f8165a106c3dfe52903726d94b695b6ab717.tar.gz
libpam-x2go-adc0f8165a106c3dfe52903726d94b695b6ab717.tar.bz2
libpam-x2go-adc0f8165a106c3dfe52903726d94b695b6ab717.zip
Making PAM call the auth check utility
Diffstat (limited to 'src')
-rw-r--r--src/Makefile.am3
-rw-r--r--src/pam-freerdp.c23
2 files changed, 9 insertions, 17 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index f7c06f8..e5b04b2 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -14,7 +14,8 @@ pam_freerdp_la_LIBADD = \
-lpam
pam_freerdp_la_CFLAGS = \
- -Wall -Werror
+ -Wall -Werror \
+ -DAUTH_CHECK="\"$(pkglibexecdir)/freerdp-auth-check\""
pkglibexec_PROGRAMS = \
freerdp-auth-check
diff --git a/src/pam-freerdp.c b/src/pam-freerdp.c
index 9fc43ed..b06a56a 100644
--- a/src/pam-freerdp.c
+++ b/src/pam-freerdp.c
@@ -130,15 +130,13 @@ pam_sm_authenticate (pam_handle_t *pamh, int flags, int argc, const char **argv)
case 0: { /* child */
dup2(stdinpipe[0], 0);
- char * args[7];
+ char * args[5];
- args[0] = XFREERDP;
- args[1] = "--plugin";
- args[2] = "rdpsnd.so";
- args[3] = "--no-nla";
- args[4] = "-f";
- args[5] = "--from-stdin";
- args[6] = NULL;
+ args[0] = AUTH_CHECK;
+ args[1] = rhost;
+ args[2] = ruser;
+ args[3] = rdomain;
+ args[4] = NULL;
struct passwd * pwdent = getpwnam(username);
if (pwdent == NULL) {
@@ -164,14 +162,7 @@ pam_sm_authenticate (pam_handle_t *pamh, int flags, int argc, const char **argv)
int forkret = 0;
int bytesout = 0;
- bytesout += write(stdinpipe[1], ruser, strlen(ruser));
- bytesout += write(stdinpipe[1], " ", 1);
- bytesout += write(stdinpipe[1], password, strlen(password));
- bytesout += write(stdinpipe[1], " ", 1);
- bytesout += write(stdinpipe[1], rdomain, strlen(rdomain));
- bytesout += write(stdinpipe[1], " ", 1);
- bytesout += write(stdinpipe[1], rhost, strlen(rhost));
- bytesout += write(stdinpipe[1], " ", 1);
+ bytesout = write(stdinpipe[1], password, strlen(password));
close(stdinpipe[1]);