aboutsummaryrefslogtreecommitdiffstats
path: root/meta-efl/recipes-efl/efl/elsa/0001-elsa-fix-to-build-really-without-PAM-support-if-PAM-.patch
blob: 2ccdb720679348312e86cc6476241b773631eae1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
From 0f97df8ddf1af3b7c8d670b8600a51e2ebe4e855 Mon Sep 17 00:00:00 2001
From: Klaus 'mrmoku' Kurzmann <mok@mnet-online.de>
Date: Sat, 19 Nov 2011 15:36:57 +0100
Subject: [PATCH 1/2] elsa: fix to build really without PAM support if PAM is
 disabled or not available

* there as still issues in runtime without PAM, but at least it builds
  now without PAM support and it's good start

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
---
 PROTO/elsa/configure.ac              |    2 +-
 PROTO/elsa/src/daemon/Makefile.am    |    6 ++++--
 PROTO/elsa/src/daemon/elsa.c         |    8 ++++++++
 PROTO/elsa/src/daemon/elsa.h         |    2 ++
 PROTO/elsa/src/daemon/elsa_session.c |   11 +++++++++--
 5 files changed, 24 insertions(+), 5 deletions(-)

diff --git a/configure.ac b/configure.ac
index ac85872..82d0a3f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -123,7 +123,6 @@ if test "x${enable_pam}" = "xyes" ; then
 fi
 
 
-
 ### Checks for header files
 
 # Pam
@@ -133,6 +132,7 @@ if test "x${have_pam}" = "xyes" ; then
       [have_pam="no"])
 fi
 
+AM_CONDITIONAL(HAVE_PAM, [test "x${have_pam}" = "xyes"])
 
 ### Checks for types
 
diff --git a/src/daemon/Makefile.am b/src/daemon/Makefile.am
index cf1cd72..7919d90 100644
--- a/src/daemon/Makefile.am
+++ b/src/daemon/Makefile.am
@@ -29,8 +29,6 @@ elsa_session.h     \
 elsa_session.c     \
 elsa_xserver.h     \
 elsa_xserver.c     \
-elsa_pam.h         \
-elsa_pam.c         \
 ../event/elsa_event.c \
 ../event/elsa_event.h \
 elsa_server.h     \
@@ -42,6 +40,10 @@ elsa_action.c     \
 elsa.h            \
 elsa.c
 
+if HAVE_PAM
+elsa_SOURCES += elsa_pam.h elsa_pam.c
+endif
+
 elsa_LDFLAGS =
 elsa_LDADD = @ELSA_LIBS@ -lpam -lrt
 
diff --git a/src/daemon/elsa.c b/src/daemon/elsa.c
index 8bc243f..23f971d 100644
--- a/src/daemon/elsa.c
+++ b/src/daemon/elsa.c
@@ -278,7 +278,9 @@ main (int argc, char ** argv)
      }
 
    elsa_user = getenv("ELSA_USER");
+#ifdef HAVE_PAM
    elsa_pam_init(PACKAGE, dname, elsa_user);
+#endif
    if (elsa_user)
      {
         char *quit;
@@ -295,7 +297,9 @@ main (int argc, char ** argv)
              exit(0);
           }
         sleep(3);
+#ifdef HAVE_PAM
         elsa_pam_init(PACKAGE, dname, NULL);
+#endif
      }
    else
      fprintf(stderr, "\n");
@@ -322,7 +326,9 @@ main (int argc, char ** argv)
         xcb_connection_t *disp = NULL;
         disp = xcb_connect(dname, NULL);
         ecore_main_loop_begin();
+#ifdef HAVE_PAM
         elsa_pam_item_set(ELSA_PAM_ITEM_USER, elsa_config->userlogin);
+#endif
         elsa_session_login(elsa_config->command.session_login, EINA_FALSE);
         sleep(30);
         xcb_disconnect(disp);
@@ -347,8 +353,10 @@ main (int argc, char ** argv)
      }
    elsa_xserver_shutdown();
    fprintf(stderr, PACKAGE": xserver shutdown\n");
+#ifdef HAVE_PAM
    elsa_pam_shutdown();
    fprintf(stderr, PACKAGE": pam shutdown\n");
+#endif
    ecore_shutdown();
    elsa_config_shutdown();
    fprintf(stderr, PACKAGE": config shutdown\n");
diff --git a/src/daemon/elsa.h b/src/daemon/elsa.h
index 87d9f49..46f2584 100644
--- a/src/daemon/elsa.h
+++ b/src/daemon/elsa.h
@@ -13,7 +13,9 @@
 #include <Ecore_File.h>
 
 #include "elsa_session.h"
+#ifdef HAVE_PAM
 #include "elsa_pam.h"
+#endif
 #include "elsa_config.h"
 #include "elsa_xserver.h"
 #include "elsa_server.h"
diff --git a/src/daemon/elsa_session.c b/src/daemon/elsa_session.c
index 3da70b3..d926db9 100644
--- a/src/daemon/elsa_session.c
+++ b/src/daemon/elsa_session.c
@@ -91,7 +91,6 @@ _elsa_session_userid_set(struct passwd *pwd)
 static Eina_Bool
 _elsa_session_begin(struct passwd *pwd, const char *cookie)
 {
-   char *term;
    fprintf(stderr, PACKAGE": Session Init\n");
    if (pwd->pw_shell[0] == '\0')
      {
@@ -99,7 +98,8 @@ _elsa_session_begin(struct passwd *pwd, const char *cookie)
         strcpy(pwd->pw_shell, getusershell());
         endusershell();
      }
-   term = getenv("TERM");
+#ifdef HAVE_PAM
+   char *term = getenv("TERM");
    if (term) elsa_pam_env_set("TERM", term);
    elsa_pam_env_set("HOME", pwd->pw_dir);
    elsa_pam_env_set("SHELL", pwd->pw_shell);
@@ -109,6 +109,7 @@ _elsa_session_begin(struct passwd *pwd, const char *cookie)
    elsa_pam_env_set("DISPLAY", ":0.0");
    elsa_pam_env_set("MAIL", "");
    elsa_pam_env_set("XAUTHORITY", cookie);
+#endif
    return EINA_TRUE;
 }
 
@@ -164,9 +165,11 @@ elsa_session_end(const char *user)
             "%s %s ", elsa_config->command.session_stop, user);
    if (-1 == system(buf))
      fprintf(stderr, PACKAGE": Error on session stop command %s", buf);
+#ifdef HAVE_PAM
    elsa_pam_close_session();
    elsa_pam_end();
    elsa_pam_shutdown();
+#endif
 }
 
 void
@@ -234,8 +237,12 @@ elsa_session_shutdown()
 Eina_Bool
 elsa_session_authenticate(const char *login, const char *passwd)
 {
+#ifdef HAVE_PAM
    return (!elsa_pam_auth_set(login, passwd)
            && !elsa_pam_authenticate());
+#else
+   return (EINA_TRUE);
+#endif
 }
 
 Eina_Bool
-- 
1.7.8.rc4