mirror of
git://git.openembedded.org/meta-openembedded
synced 2026-09-26 22:17:38 +00:00
elsa: fix to build with disabled PAM
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
This commit is contained in:
parent
8eede31c53
commit
c2660eb5c6
@ -0,0 +1,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
|
||||||
|
|
||||||
@ -7,6 +7,7 @@ SECTION = "e/apps"
|
|||||||
inherit e gettext
|
inherit e gettext
|
||||||
SRC_URI = "${E_SVN}/trunk/PROTO;module=${SRCNAME};proto=http;scmdata=keep \
|
SRC_URI = "${E_SVN}/trunk/PROTO;module=${SRCNAME};proto=http;scmdata=keep \
|
||||||
file://0001-pam-use-common-auth-instead-of-system-auth.patch \
|
file://0001-pam-use-common-auth-instead-of-system-auth.patch \
|
||||||
|
file://0001-elsa-fix-to-build-really-without-PAM-support-if-PAM-.patch \
|
||||||
file://xserver-nodm.service \
|
file://xserver-nodm.service \
|
||||||
"
|
"
|
||||||
S = "${WORKDIR}/${SRCNAME}"
|
S = "${WORKDIR}/${SRCNAME}"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user