diff options
author | root <root@rshg054.dnsready.net> | 2012-08-04 00:02:16 +0000 |
---|---|---|
committer | root <root@rshg054.dnsready.net> | 2012-08-04 00:02:16 +0000 |
commit | f8ac5d4703080cc87ba2fe36f68df745d3a5f62f (patch) | |
tree | 641ccb335800a868031ab1d89d554e5c1b0f0d9a /community/lxdm/pam-env-vars.patch | |
parent | 60f7eab28ba0dd57c8ce519609f393dd3931b621 (diff) |
Sat Aug 4 00:02:16 UTC 2012
Diffstat (limited to 'community/lxdm/pam-env-vars.patch')
-rw-r--r-- | community/lxdm/pam-env-vars.patch | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/community/lxdm/pam-env-vars.patch b/community/lxdm/pam-env-vars.patch new file mode 100644 index 000000000..ab8605ff1 --- /dev/null +++ b/community/lxdm/pam-env-vars.patch @@ -0,0 +1,50 @@ +diff --git a/src/lxdm.c b/src/lxdm.c +index 369aedf..cd1d486 100644 +--- a/src/lxdm.c ++++ b/src/lxdm.c +@@ -935,16 +935,23 @@ void setup_pam_session(LXSession *s,struct passwd *pw,char *session_name) + g_warning( "pam open session error \"%s\"\n", pam_strerror(s->pamh, err)); + } + +-void append_pam_environ(pam_handle_t *pamh,char **env) ++static char **append_pam_environ(pam_handle_t *pamh,char **env) + { +- int i,j,n; ++ int i,j,n,a; + char **penv; +- if(!pamh) return; ++ if(!pamh) return env; + penv=pam_getenvlist(pamh); +- if(!penv) return; ++ if(!penv) return env; ++ a=g_strv_length(penv); ++ if(a==0) ++ { ++ free(penv); ++ return env; ++ } ++ env=g_renew(char *,env,g_strv_length(env)+1+a+10); + for(i=0;penv[i]!=NULL;i++) + { +- //printf("PAM %s\n",penv[i]); ++ fprintf(stderr,"PAM %s\n",penv[i]); + n=strcspn(penv[i],"=")+1; + for(j=0;env[j]!=NULL;j++) + { +@@ -960,6 +967,7 @@ void append_pam_environ(pam_handle_t *pamh,char **env) + free(penv[i]); + } + free(penv); ++ return env; + } + + #endif +@@ -1540,7 +1548,7 @@ void lxdm_do_login(struct passwd *pw, char *session, char *lang, char *option) + if(s->child==0) + { + #if HAVE_LIBPAM +- append_pam_environ(s->pamh,env); ++ env=append_pam_environ(s->pamh,env); + pam_end(s->pamh,0); + #endif + switch_user(pw, session_exec, env); |