diff options
author | Logan Rathbone <poprocks@gmail.com> | 2019-11-03 01:27:55 +0700 |
---|---|---|
committer | Willy Sudiarto Raharjo <willysr@slackbuilds.org> | 2019-11-03 01:27:55 +0700 |
commit | b32c9f8ba901f68df11d723c11ac99b3e717f5ce (patch) | |
tree | 57437a166db33ec01783bfc675f17a4b7e68918d /desktop/weston/weston-7.0.0-nopam.patch | |
parent | 833a418a9448f32874014c89bf70b7f065bdb220 (diff) |
desktop/weston: Added (Reference implementation of a Wayland).
Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
Diffstat (limited to 'desktop/weston/weston-7.0.0-nopam.patch')
-rw-r--r-- | desktop/weston/weston-7.0.0-nopam.patch | 160 |
1 files changed, 160 insertions, 0 deletions
diff --git a/desktop/weston/weston-7.0.0-nopam.patch b/desktop/weston/weston-7.0.0-nopam.patch new file mode 100644 index 0000000000000..8ad7b3639c9de --- /dev/null +++ b/desktop/weston/weston-7.0.0-nopam.patch @@ -0,0 +1,160 @@ +diff -Naur weston-7.0.0.orig/libweston/meson.build weston-7.0.0/libweston/meson.build +--- weston-7.0.0.orig/libweston/meson.build 2019-08-23 16:59:16.000000000 -0400 ++++ weston-7.0.0/libweston/meson.build 2019-10-17 22:22:55.415927653 -0400 +@@ -199,16 +199,11 @@ + ) + + if get_option('weston-launch') +- dep_pam = cc.find_library('pam') +- +- if not cc.has_function('pam_open_session', dependencies: dep_pam) +- error('pam_open_session not found for weston-launch') +- endif + + executable( + 'weston-launch', + 'weston-launch.c', +- dependencies: [dep_pam, systemd_dep, dep_libdrm], ++ dependencies: [systemd_dep, dep_libdrm], + include_directories: include_directories('..'), + install: true + ) +diff -Naur weston-7.0.0.orig/libweston/weston-launch.c weston-7.0.0/libweston/weston-launch.c +--- weston-7.0.0.orig/libweston/weston-launch.c 2019-08-23 16:59:16.000000000 -0400 ++++ weston-7.0.0/libweston/weston-launch.c 2019-10-17 22:52:18.991891665 -0400 +@@ -51,7 +51,6 @@ + + #include <pwd.h> + #include <grp.h> +-#include <security/pam_appl.h> + + #ifdef HAVE_SYSTEMD_LOGIN + #include <systemd/sd-login.h> +@@ -100,8 +99,6 @@ + #endif + + struct weston_launch { +- struct pam_conv pc; +- pam_handle_t *ph; + int tty; + int ttynr; + int sock[2]; +@@ -193,47 +190,6 @@ + } + + static int +-pam_conversation_fn(int msg_count, +- const struct pam_message **messages, +- struct pam_response **responses, +- void *user_data) +-{ +- return PAM_SUCCESS; +-} +- +-static int +-setup_pam(struct weston_launch *wl) +-{ +- int err; +- +- wl->pc.conv = pam_conversation_fn; +- wl->pc.appdata_ptr = wl; +- +- err = pam_start("login", wl->pw->pw_name, &wl->pc, &wl->ph); +- if (err != PAM_SUCCESS) { +- fprintf(stderr, "failed to start pam transaction: %d: %s\n", +- err, pam_strerror(wl->ph, err)); +- return -1; +- } +- +- err = pam_set_item(wl->ph, PAM_TTY, ttyname(wl->tty)); +- if (err != PAM_SUCCESS) { +- fprintf(stderr, "failed to set PAM_TTY item: %d: %s\n", +- err, pam_strerror(wl->ph, err)); +- return -1; +- } +- +- err = pam_open_session(wl->ph, 0); +- if (err != PAM_SUCCESS) { +- fprintf(stderr, "failed to open pam session: %d: %s\n", +- err, pam_strerror(wl->ph, err)); +- return -1; +- } +- +- return 0; +-} +- +-static int + setup_launcher_socket(struct weston_launch *wl) + { + if (socketpair(AF_LOCAL, SOCK_SEQPACKET, 0, wl->sock) < 0) { +@@ -431,14 +387,6 @@ + close(wl->signalfd); + close(wl->sock[0]); + +- if (wl->new_user) { +- err = pam_close_session(wl->ph, 0); +- if (err) +- fprintf(stderr, "pam_close_session failed: %d: %s\n", +- err, pam_strerror(wl->ph, err)); +- pam_end(wl->ph, err); +- } +- + if (ioctl(wl->tty, KDSKBMUTE, 0) && + ioctl(wl->tty, KDSKBMODE, wl->kb_mode)) + fprintf(stderr, "failed to restore keyboard mode: %s\n", +@@ -660,15 +608,6 @@ + setenv("HOME", wl->pw->pw_dir, 1); + setenv("SHELL", wl->pw->pw_shell, 1); + +- env = pam_getenvlist(wl->ph); +- if (env) { +- for (i = 0; env[i]; ++i) { +- if (putenv(env[i]) != 0) +- fprintf(stderr, "putenv %s failed\n", env[i]); +- } +- free(env); +- } +- + /* + * We open a new session, so it makes sense + * to run a new login shell +@@ -739,8 +678,6 @@ + help(const char *name) + { + fprintf(stderr, "Usage: %s [args...] [-- [weston args..]]\n", name); +- fprintf(stderr, " -u, --user Start session as specified username,\n" +- " e.g. -u joe, requires root.\n"); + fprintf(stderr, " -t, --tty Start session on alternative tty,\n" + " e.g. -t /dev/tty4, requires -u option.\n"); + fprintf(stderr, " -v, --verbose Be verbose\n"); +@@ -754,7 +691,6 @@ + int i, c; + char *tty = NULL; + struct option opts[] = { +- { "user", required_argument, NULL, 'u' }, + { "tty", required_argument, NULL, 't' }, + { "verbose", no_argument, NULL, 'v' }, + { "help", no_argument, NULL, 'h' }, +@@ -766,11 +702,7 @@ + while ((c = getopt_long(argc, argv, "u:t:vh", opts, &i)) != -1) { + switch (c) { + case 'u': +- wl.new_user = optarg; +- if (getuid() != 0) { +- fprintf(stderr, "weston: Permission denied. -u allowed for root only\n"); +- exit(EXIT_FAILURE); +- } ++ fprintf(stderr, "weston: -u is unsupported in this weston-launch build\n"); + break; + case 't': + tty = optarg; +@@ -822,9 +754,6 @@ + if (setup_tty(&wl, tty) < 0) + exit(EXIT_FAILURE); + +- if (wl.new_user && setup_pam(&wl) < 0) +- exit(EXIT_FAILURE); +- + if (setup_launcher_socket(&wl) < 0) + exit(EXIT_FAILURE); + |