summaryrefslogtreecommitdiffstats
path: root/desktop/weston/weston-7.0.0-nopam.patch
blob: 8ad7b3639c9de10324260f4687b70e550d73a015 (plain)
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);