aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Gould <ted@gould.cx>2012-08-20 14:39:57 -0500
committerTed Gould <ted@gould.cx>2012-08-20 14:39:57 -0500
commit200ccab9283410f1ddf65cce7d0f1b77dc5dcbcf (patch)
tree780314c34ae7ca33a0c382d0399132ad75b99dab
parent35dc28b34f75794f4e88add4298032d236b167e1 (diff)
downloadlibpam-x2go-200ccab9283410f1ddf65cce7d0f1b77dc5dcbcf.tar.gz
libpam-x2go-200ccab9283410f1ddf65cce7d0f1b77dc5dcbcf.tar.bz2
libpam-x2go-200ccab9283410f1ddf65cce7d0f1b77dc5dcbcf.zip
Setting the home directory to the user's directory
-rw-r--r--src/pam-freerdp.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/src/pam-freerdp.c b/src/pam-freerdp.c
index d8c6703..7bd2657 100644
--- a/src/pam-freerdp.c
+++ b/src/pam-freerdp.c
@@ -3,6 +3,8 @@
#include <string.h>
#include <unistd.h>
#include <sys/wait.h>
+#include <sys/types.h>
+#include <pwd.h>
#include <security/pam_modules.h>
#include <security/pam_modutil.h>
@@ -108,20 +110,24 @@ pam_sm_authenticate (pam_handle_t *pamh, int flags, int argc, const char **argv)
case 0: { /* child */
dup2(stdinpipe[0], 0);
- char * args[8];
+ char * args[7];
args[0] = XFREERDP;
args[1] = "--plugin";
args[2] = "rdpsnd.so";
args[3] = "--no-nla";
args[4] = "-f";
- args[5] = "--ignore-certificate"; /* TODO: Change when we set the home directory properly */
- args[6] = "--from-stdin";
-
- args[7] = NULL;
+ args[5] = "--from-stdin";
+ args[6] = NULL;
+
+ struct passwd * pwdent = getpwnam(username);
+ if (pwdent == NULL) {
+ _exit(-1);
+ }
+
+ setenv("HOME", pwdent->pw_dir, 1);
/* TODO: Drop privs */
- /* TODO: Home directory environment to user's home */
execvp(args[0], args);
_exit(EXIT_FAILURE);
break;