diff options
author | Rene Ladan <rene@FreeBSD.org> | 2021-01-02 11:21:30 +0000 |
---|---|---|
committer | Rene Ladan <rene@FreeBSD.org> | 2021-01-02 11:21:30 +0000 |
commit | 474895cdb67df33222fa2b2e67a4c6fc7dea0fa7 (patch) | |
tree | 88f0bd8b077f4fe5cb17646d5336161aa4610b11 /x11/cinnamon-screensaver/files/patch-src_gs-auth-helper.c | |
parent | archivers/urbackup-client: update 2.4.10 -> 2.4.11.0 (diff) |
Upgrade the Cinnamon desktop environment to version 4.8
This version uses Python 3 instead of the expired Python 2.7
From the main PR (249856):
" There are a couple known issues:
* x11-fm/nemo crashes upon closing a window or tab.
* x11/cinnamon-screensaver unlocking doesn't work, most likely due to a missing PAM (Linux-PAM?) integration.
Both of these issues are being worked on.
I've been dogfooding since Cinnamon 4.0, and apart from those issues, everything works."
PR: 249771
PR: 249851
PR: 249855
PR: 249856
PR: 249857
PR: 249858
Submitted by: Charlie Li
Diffstat (limited to 'x11/cinnamon-screensaver/files/patch-src_gs-auth-helper.c')
-rw-r--r-- | x11/cinnamon-screensaver/files/patch-src_gs-auth-helper.c | 201 |
1 files changed, 0 insertions, 201 deletions
diff --git a/x11/cinnamon-screensaver/files/patch-src_gs-auth-helper.c b/x11/cinnamon-screensaver/files/patch-src_gs-auth-helper.c deleted file mode 100644 index 00e8766f402c..000000000000 --- a/x11/cinnamon-screensaver/files/patch-src_gs-auth-helper.c +++ /dev/null @@ -1,201 +0,0 @@ ---- src/gs-auth-helper.c.orig 2011-03-16 17:24:06.000000000 -0500 -+++ src/gs-auth-helper.c 2011-03-16 17:23:55.000000000 -0500 -@@ -0,0 +1,198 @@ -+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- -+ * -+ * written by Olaf Kirch <okir@suse.de> -+ * xscreensaver, Copyright (c) 1993-2004 Jamie Zawinski <jwz@jwz.org> -+ * -+ * Permission to use, copy, modify, distribute, and sell this software and its -+ * documentation for any purpose is hereby granted without fee, provided that -+ * the above copyright notice appear in all copies and that both that -+ * copyright notice and this permission notice appear in supporting -+ * documentation. No representations are made about the suitability of this -+ * software for any purpose. It is provided "as is" without express or -+ * implied warranty. -+ */ -+ -+/* The idea here is to be able to run gnome-screensaver-dialog without any setuid bits. -+ * Password verification happens through an external program that you feed -+ * your password to on stdin. The external command is invoked with a user -+ * name argument. -+ * -+ * The external helper does whatever authentication is necessary. Currently, -+ * SuSE uses "unix2_chkpwd", which is a variation of "unix_chkpwd" from the -+ * PAM distribution. -+ * -+ * Normally, the password helper should just authenticate the calling user -+ * (i.e. based on the caller's real uid). This is in order to prevent -+ * brute-forcing passwords in a shadow environment. A less restrictive -+ * approach would be to allow verifying other passwords as well, but always -+ * with a 2 second delay or so. (Not sure what SuSE's "unix2_chkpwd" -+ * currently does.) -+ * -- Olaf Kirch <okir@suse.de>, 16-Dec-2003 -+ */ -+ -+#include "config.h" -+ -+#include <stdlib.h> -+#ifdef HAVE_UNISTD_H -+# include <unistd.h> -+#endif -+ -+#include <stdio.h> -+#include <string.h> -+#include <sys/types.h> -+#include <pwd.h> -+#include <errno.h> -+#include <sys/wait.h> -+ -+#include <glib.h> -+#include <glib/gstdio.h> -+ -+#include "gs-auth.h" -+#include "subprocs.h" -+ -+static gboolean verbose_enabled = FALSE; -+ -+GQuark -+gs_auth_error_quark (void) -+{ -+ static GQuark quark = 0; -+ if (! quark) { -+ quark = g_quark_from_static_string ("gs_auth_error"); -+ } -+ -+ return quark; -+} -+ -+void -+gs_auth_set_verbose (gboolean enabled) -+{ -+ verbose_enabled = enabled; -+} -+ -+gboolean -+gs_auth_get_verbose (void) -+{ -+ return verbose_enabled; -+} -+ -+static gboolean -+ext_run (const char *user, -+ const char *typed_passwd, -+ gboolean verbose) -+{ -+ int pfd[2], status; -+ pid_t pid; -+ -+ if (pipe (pfd) < 0) { -+ return 0; -+ } -+ -+ if (verbose) { -+ g_message ("ext_run (%s, %s)", -+ PASSWD_HELPER_PROGRAM, user); -+ } -+ -+ block_sigchld (); -+ -+ if ((pid = fork ()) < 0) { -+ close (pfd [0]); -+ close (pfd [1]); -+ return FALSE; -+ } -+ -+ if (pid == 0) { -+ close (pfd [1]); -+ if (pfd [0] != 0) { -+ dup2 (pfd [0], 0); -+ } -+ -+ /* Helper is invoked as helper service-name [user] */ -+ execlp (PASSWD_HELPER_PROGRAM, PASSWD_HELPER_PROGRAM, "gnome-screensaver", user, NULL); -+ if (verbose) { -+ g_message ("%s: %s", PASSWD_HELPER_PROGRAM, g_strerror (errno)); -+ } -+ -+ exit (1); -+ } -+ -+ close (pfd [0]); -+ -+ /* Write out password to helper process */ -+ if (!typed_passwd) { -+ typed_passwd = ""; -+ } -+ write (pfd [1], typed_passwd, strlen (typed_passwd)); -+ close (pfd [1]); -+ -+ while (waitpid (pid, &status, 0) < 0) { -+ if (errno == EINTR) { -+ continue; -+ } -+ -+ if (verbose) { -+ g_message ("ext_run: waitpid failed: %s\n", -+ g_strerror (errno)); -+ } -+ -+ unblock_sigchld (); -+ return FALSE; -+ } -+ -+ unblock_sigchld (); -+ -+ if (! WIFEXITED (status) || WEXITSTATUS (status) != 0) { -+ return FALSE; -+ } -+ -+ return TRUE; -+} -+ -+gboolean -+gs_auth_verify_user (const char *username, -+ const char *display, -+ GSAuthMessageFunc func, -+ gpointer data, -+ GError **error) -+{ -+ gboolean res = FALSE; -+ char *password; -+ -+ password = NULL; -+ -+ /* ask for the password for user */ -+ if (func != NULL) { -+ func (GS_AUTH_MESSAGE_PROMPT_ECHO_OFF, -+ "Password: ", -+ &password, -+ data); -+ } -+ -+ if (password == NULL) { -+ return FALSE; -+ } -+ -+ res = ext_run (username, password, gs_auth_get_verbose ()); -+ -+ return res; -+} -+ -+gboolean -+gs_auth_init (void) -+{ -+ return TRUE; -+} -+ -+gboolean -+gs_auth_priv_init (void) -+{ -+ /* Make sure the passwd helper exists */ -+ if (g_access (PASSWD_HELPER_PROGRAM, X_OK) < 0) { -+ g_warning ("%s does not exist. " -+ "password authentication via " -+ "external helper will not work.", -+ PASSWD_HELPER_PROGRAM); -+ return FALSE; -+ } -+ -+ return TRUE; -+} |