From a2a0799ba42d524a3973c4ad6a27a3f857c01297 Mon Sep 17 00:00:00 2001 From: Hans de Goede Date: Thu, 11 Sep 2014 19:47:04 +0200 Subject: [PATCH] New upstream release 1.3.4 - Resolves #806491 #990213 #1006029 - Remove stale ck-xinit-session references from xinitrc-common (#910969) - Make startx pass "-nolisten tcp" by default, use -listen as server option to disable this (#1111684) - Teach Xclients script about lxde (#488602) --- .gitignore | 1 + ...p-RAWCPPFLAGS-when-generating-startx.patch | 26 ---- ...-startx-Pass-nolisten-tcp-by-default.patch | 73 +++++++++ ...nder-Linux-start-X-on-the-current-VT.patch | 50 ------ ...ile.am-Give-XINITDIR-a-default-value.patch | 28 ---- Xclients | 6 + ck-xinit-session.c | 147 ------------------ sources | 2 +- xinit-1.0.2-client-session.patch | 37 +++-- xinitrc-common | 5 - xorg-x11-xinit.spec | 31 ++-- 11 files changed, 113 insertions(+), 293 deletions(-) delete mode 100644 0001-Drop-RAWCPPFLAGS-when-generating-startx.patch create mode 100644 0001-startx-Pass-nolisten-tcp-by-default.patch delete mode 100644 0002-startx-Under-Linux-start-X-on-the-current-VT.patch delete mode 100644 0003-Makefile.am-Give-XINITDIR-a-default-value.patch delete mode 100644 ck-xinit-session.c diff --git a/.gitignore b/.gitignore index 90ebfeb..cd47489 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ xinit-1.0.7.tar.bz2 /xinit-1.3.1.tar.bz2 /xinit-1.3.2.tar.bz2 +/xinit-1.3.4.tar.bz2 diff --git a/0001-Drop-RAWCPPFLAGS-when-generating-startx.patch b/0001-Drop-RAWCPPFLAGS-when-generating-startx.patch deleted file mode 100644 index 114161c..0000000 --- a/0001-Drop-RAWCPPFLAGS-when-generating-startx.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 90b6f5dfcb9c9f41dcbd59b006ea703f2f78b3b1 Mon Sep 17 00:00:00 2001 -From: Hans de Goede -Date: Tue, 25 Mar 2014 11:48:58 +0100 -Subject: [PATCH 1/3] Drop $RAWCPPFLAGS when generating startx - -startx.cpp contains things like #if defined(__SCO__), and -$RAWCPPFLAGS contains -undef causing these to not get set. - -Signed-off-by: Hans de Goede ---- - cpprules.in | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/cpprules.in b/cpprules.in -index 0931bee..781676a 100644 ---- a/cpprules.in -+++ b/cpprules.in -@@ -15,4 +15,4 @@ CPP_SED_MAGIC = $(SED) -e '/^\# *[0-9][0-9]* *.*$$/d' \ - SUFFIXES = .cpp - - .cpp: -- $(AM_V_GEN)$(RAWCPP) $(RAWCPPFLAGS) $(CPP_FILES_FLAGS) < $< | $(CPP_SED_MAGIC) > $@ -+ $(AM_V_GEN)$(RAWCPP) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) > $@ --- -1.9.0 - diff --git a/0001-startx-Pass-nolisten-tcp-by-default.patch b/0001-startx-Pass-nolisten-tcp-by-default.patch new file mode 100644 index 0000000..3ad2e13 --- /dev/null +++ b/0001-startx-Pass-nolisten-tcp-by-default.patch @@ -0,0 +1,73 @@ +From a750c23c155f889cbb29a3c879b1e19f2707a823 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Thu, 11 Sep 2014 18:02:24 +0200 +Subject: [PATCH xinit] startx: Pass "-nolisten tcp" by default + +Having servers started by startx listen on tcp by default is not a good idea +in this time and age. Pass "-nolisten tcp" by default, and add a special +-listen server option which can be used to disable this new default behavior. + +Signed-off-by: Hans de Goede +--- + man/startx.man | 7 +++++++ + startx.cpp | 5 +++++ + 2 files changed, 12 insertions(+) + +diff --git a/man/startx.man b/man/startx.man +index 0405be0..fc2cbc3 100644 +--- a/man/startx.man ++++ b/man/startx.man +@@ -39,6 +39,8 @@ startx \- initialize an X session + .I server + ] [ + .I display ++] [ ++.I -listen + ] + .I options + \&.\|.\|. ] +@@ -56,6 +58,11 @@ command are used to start a client in the same manner as + The special argument + .RB '--' + marks the end of client arguments and the beginning of server options. ++By default startx passes ++.RB '-nolisten\ tcp' ++to the server, the special server option ++.RB '-listen' ++can be used to stop startx from doing this. + It may be convenient to specify server options with startx to change on a + per-session basis the + default color depth, the server's notion of the number of dots-per-inch the +diff --git a/startx.cpp b/startx.cpp +index 1c6fce0..8612fa6 100644 +--- a/startx.cpp ++++ b/startx.cpp +@@ -60,6 +60,7 @@ defaultdisplay=":0" + clientargs="" + serverargs="" + vtarg="" ++listenarg="-nolisten tcp" + + #ifdef __APPLE__ + +@@ -156,6 +157,8 @@ while [ x"$1" != x ]; do + if [ x"$serverargs" = x ] && @@ + expr "$1" : ':[0-9][0-9]*$' > /dev/null 2>&1; then + display="$1" ++ elif [ "$1" = "-listen" ]; then ++ listenarg="" + else + serverargs="$serverargs $1" + fi +@@ -225,6 +228,8 @@ if [ "$have_vtarg" = "no" ]; then + serverargs="$serverargs $vtarg" + fi + ++serverargs="$serverargs $listenarg" ++ + XCOMM if no display, use default + if [ x"$display" = x ]; then + display=$defaultdisplay +-- +2.1.0 + diff --git a/0002-startx-Under-Linux-start-X-on-the-current-VT.patch b/0002-startx-Under-Linux-start-X-on-the-current-VT.patch deleted file mode 100644 index 3c66b1d..0000000 --- a/0002-startx-Under-Linux-start-X-on-the-current-VT.patch +++ /dev/null @@ -1,50 +0,0 @@ -From e222d3b978499d1e9293dcbe97bb8349da8ad4ea Mon Sep 17 00:00:00 2001 -From: Hans de Goede -Date: Tue, 25 Mar 2014 11:54:31 +0100 -Subject: [PATCH 2/3] startx: Under Linux start X on the current VT - -When we let X allocate a new VT, systemd-logind will not recognize any -processes running on this VT as belonging to a valid session (since there -was no pam session opened on that tty). - -This causes problems like PolicyKit denials for these processes. - -ConsoleKit under Linux has been deprecated for a few years now and is no -longer being maintained, so simply make this the default under Linux. - -Note we do not pass in the vt if the user has specified an alternative server -to start, as the vtX argument is only valid for the Xorg server, likewise we -omit it if the user has specified any other server arguments. - -Fixes: -https://bugzilla.redhat.com/show_bug.cgi?id=806491 - -Signed-off-by: Hans de Goede ---- - startx.cpp | 10 ++++++++++ - 1 file changed, 10 insertions(+) - -diff --git a/startx.cpp b/startx.cpp -index c595b84..3708471 100644 ---- a/startx.cpp -+++ b/startx.cpp -@@ -228,6 +228,16 @@ XCOMM process server arguments - if [ x"$server" = x ]; then - server=$defaultserver - -+#ifdef __linux__ -+ XCOMM When starting the defaultserver start X on the current tty to avoid -+ XCOMM the startx session being seen as inactive: RHBZ#820675 -+ tty=$(tty) -+ if expr match "$tty" '^/dev/tty[0-9]\+$' > /dev/null; then -+ tty_num=$(echo "$tty" | grep -oE '[0-9]+$') -+ defaultserverargs=${defaultserverargs}" vt"${tty_num} -+ fi -+#endif -+ - XCOMM For compatibility reasons, only use xserverrc if there were no server command line arguments - if [ x"$serverargs" = x -a x"$display" = x ]; then - if [ -f "$userserverrc" ]; then --- -1.9.0 - diff --git a/0003-Makefile.am-Give-XINITDIR-a-default-value.patch b/0003-Makefile.am-Give-XINITDIR-a-default-value.patch deleted file mode 100644 index b787a32..0000000 --- a/0003-Makefile.am-Give-XINITDIR-a-default-value.patch +++ /dev/null @@ -1,28 +0,0 @@ -From ab3df9890d3056f217c1fce11101e362db1bdcf7 Mon Sep 17 00:00:00 2001 -From: Hans de Goede -Date: Tue, 25 Mar 2014 12:31:28 +0100 -Subject: [PATCH 3/3] Makefile.am: Give XINITDIR a default value - -We are using XINITDIR, but never setting it. Lets give it a sane default. - -Signed-off-by: Hans de Goede ---- - Makefile.am | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/Makefile.am b/Makefile.am -index 3867bea..ec8d4cc 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -27,6 +27,8 @@ endif - bin_PROGRAMS = xinit - bin_SCRIPTS = startx - -+XINITDIR = $(sysconfdir)/X11/xinit -+ - AM_CFLAGS = $(CWARNFLAGS) $(XINIT_CFLAGS) - AM_CPPFLAGS = -DXINITDIR=\"$(XINITDIR)\" -DBINDIR=\"$(bindir)\" - xinit_LDADD = $(XINIT_LIBS) --- -1.9.0 - diff --git a/Xclients b/Xclients index d2b81c7..6f98d2e 100755 --- a/Xclients +++ b/Xclients @@ -10,6 +10,7 @@ GSESSION="$(type -p gnome-session)" STARTKDE="$(type -p startkde)" +STARTLXDE="$(type -p startlxde)" # check to see if the user has a preferred desktop PREFERRED= @@ -19,6 +20,8 @@ if [ -f /etc/sysconfig/desktop ]; then PREFERRED="$GSESSION" elif [ "$DESKTOP" = "KDE" ]; then PREFERRED="$STARTKDE" + elif [ "$DESKTOP" = "LXDE" ]; then + PREFERRED="$STARTLXDE" fi fi @@ -35,6 +38,9 @@ if [ -n "$GSESSION" ]; then elif [ -n "$STARTKDE" ]; then # if GNOME isn't installed, try KDE. exec "$STARTKDE" +elif [ -n "$STARTLXDE" ]; then + # if neither GNOME nor KDE then LXDE + exec "$STARTLXDE" fi # We should also support /etc/X11/xinit/Xclients.d scripts diff --git a/ck-xinit-session.c b/ck-xinit-session.c deleted file mode 100644 index 9e2ddfc..0000000 --- a/ck-xinit-session.c +++ /dev/null @@ -1,147 +0,0 @@ -/* - * Copyright Red Hat, Inc. 2007,2009. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Red Hat, Inc., nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * Gate a process inside of a ConsoleKit session. - * - * We want to do this instead of doing it from inside of xinit because at the - * point we're doing it, we've already added the user's UID to the list of - * allowed clients for the X server, so the ConsoleKit daemon, which assumes - * the user's UID, will be able to connect without needing to be able to read - * the user's X cookies. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -static void -setbusenv(const char *var, const char *val) -{ - DBusConnection *conn; - DBusMessage *req, *rep; - DBusMessageIter iter, sub, subsub; - DBusError error; - - dbus_error_init (&error); - - conn = dbus_bus_get(DBUS_BUS_SESSION, &error); - if (conn == NULL) { - return; - } - - req = dbus_message_new(DBUS_MESSAGE_TYPE_METHOD_CALL); - if (req == NULL) { - return; - } - - memset(&iter, 0, sizeof(iter)); - memset(&sub, 0, sizeof(sub)); - memset(&subsub, 0, sizeof(subsub)); - dbus_message_iter_init_append(req, &iter); - if (!dbus_message_set_destination(req, DBUS_SERVICE_DBUS) || - !dbus_message_set_path(req, DBUS_PATH_DBUS) || - !dbus_message_set_interface(req, DBUS_INTERFACE_DBUS) || - !dbus_message_set_member(req, "UpdateActivationEnvironment") || - !dbus_message_iter_open_container(&iter, - DBUS_TYPE_ARRAY, - DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING - DBUS_TYPE_STRING_AS_STRING - DBUS_TYPE_STRING_AS_STRING - DBUS_DICT_ENTRY_END_CHAR_AS_STRING, - &sub) || - !dbus_message_iter_open_container(&sub, - DBUS_TYPE_DICT_ENTRY, - NULL, - &subsub) || - !dbus_message_iter_append_basic(&subsub, DBUS_TYPE_STRING, &var) || - !dbus_message_iter_append_basic(&subsub, DBUS_TYPE_STRING, &val) || - !dbus_message_iter_close_container(&sub, &subsub) || - !dbus_message_iter_close_container(&iter, &sub)) { - dbus_message_unref(req); - return; - } - rep = dbus_connection_send_with_reply_and_block(conn, req, - 30000, &error); - dbus_message_unref(req); - if (rep) { - dbus_message_unref(rep); - } -} - -int -main(int argc, char **argv) -{ - CkConnector *ckc = NULL; - DBusError error; - const char *shell, *cookie; - pid_t pid; - int status; - - ckc = ck_connector_new(); - if (ckc != NULL) { - dbus_error_init (&error); - if (ck_connector_open_session(ckc, &error)) { - pid = fork(); - switch (pid) { - case -1: - syslog(LOG_ERR, "error forking child"); - break; - case 0: - cookie = ck_connector_get_cookie(ckc); - setenv("XDG_SESSION_COOKIE", cookie, 1); - setbusenv("XDG_SESSION_COOKIE", cookie); - break; - default: - waitpid(pid, &status, 0); - exit(status); - break; - } - } else { - syslog(LOG_ERR, "error connecting to console-kit"); - } - } else { - syslog(LOG_ERR, "error setting up to connect to console-kit"); - } - if (argc > 1) { - execvp(argv[1], argv + 1); - } else { - shell = getenv("SHELL"); - if (shell == NULL) { - shell = _PATH_BSHELL; - } - execlp(shell, shell, NULL); - } - _exit(1); -} diff --git a/sources b/sources index eb0f4e2..ff83b80 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -9c0943cbd83e489ad1b05221b97efd44 xinit-1.3.2.tar.bz2 +4e928452dfaf73851413a2d8b8c76388 xinit-1.3.4.tar.bz2 diff --git a/xinit-1.0.2-client-session.patch b/xinit-1.0.2-client-session.patch index a38c883..f463f68 100644 --- a/xinit-1.0.2-client-session.patch +++ b/xinit-1.0.2-client-session.patch @@ -1,8 +1,7 @@ -Index: xinit-1.3.1/xinit.c -=================================================================== ---- xinit-1.3.1.orig/xinit.c -+++ xinit-1.3.1/xinit.c -@@ -91,6 +91,8 @@ char xserverrcbuf[256]; +diff -up xinit-1.3.4/xinit.c.client-session xinit-1.3.4/xinit.c +--- xinit-1.3.4/xinit.c.client-session 2014-03-25 10:20:26.000000000 +0100 ++++ xinit-1.3.4/xinit.c 2014-09-11 17:03:30.928360694 +0200 +@@ -89,6 +89,8 @@ char xserverrcbuf[256]; #define TRUE 1 #define FALSE 0 @@ -11,29 +10,29 @@ Index: xinit-1.3.1/xinit.c static char *default_server = "X"; static char *default_display = ":0"; /* choose most efficient */ -@@ -561,6 +563,7 @@ startClient(char *client[]) +@@ -560,6 +562,7 @@ startClient(char *client_argv[]) { clientpid = fork(); if (clientpid == 0) { -+ int fd; ++ int fd; set_environment(); setWindowPath(); -@@ -568,7 +571,16 @@ startClient(char *client[]) +@@ -567,7 +570,16 @@ startClient(char *client_argv[]) Error("cannot change uid"); _exit(EXIT_FAILURE); } - setpgid(0, getpid()); -+ fd = open ("/dev/null", O_RDONLY); ++ fd = open ("/dev/null", O_RDONLY); + -+ if (fd < 0) { -+ Error("cannot open /dev/null: %s\n", strerror(errno)); -+ _exit(ERR_EXIT); -+ } -+ close (STDIN_FILENO); -+ dup2 (fd, STDIN_FILENO); -+ close (fd); -+ setsid(); - Execute(client); - Error("Unable to run program \"%s\"", client[0]); ++ if (fd < 0) { ++ Error("cannot open /dev/null: %s\n", strerror(errno)); ++ _exit(ERR_EXIT); ++ } ++ close (STDIN_FILENO); ++ dup2 (fd, STDIN_FILENO); ++ close (fd); ++ setsid(); + Execute(client_argv); + Error("Unable to run program \"%s\"", client_argv[0]); diff --git a/xinitrc-common b/xinitrc-common index 000ab67..4564ebc 100644 --- a/xinitrc-common +++ b/xinitrc-common @@ -64,8 +64,3 @@ if [ -z "$SSH_AGENT_PID" ] && [ -x /usr/bin/ssh-agent ]; then SSH_AGENT="/usr/bin/ssh-agent" fi fi - -CK_XINIT_SESSION= -if [ -z "$XDG_SESSION_COOKIE" ] && [ -x /usr/bin/ck-xinit-session ]; then - CK_XINIT_SESSION="/usr/bin/ck-xinit-session" -fi diff --git a/xorg-x11-xinit.spec b/xorg-x11-xinit.spec index 5f4d4a2..6aaac33 100644 --- a/xorg-x11-xinit.spec +++ b/xorg-x11-xinit.spec @@ -2,13 +2,13 @@ Summary: X.Org X11 X Window System xinit startup scripts Name: xorg-x11-%{pkgname} -Version: 1.3.2 -Release: 13%{?dist} +Version: 1.3.4 +Release: 1%{?dist} License: MIT Group: User Interface/X URL: http://www.x.org -Source0: ftp://ftp.x.org/pub/individual/app/%{pkgname}-%{version}.tar.bz2 +Source0: http://xorg.freedesktop.org/archive/individual/app/%{pkgname}-%{version}.tar.bz2 Source10: xinitrc-common Source11: xinitrc Source12: Xclients @@ -25,20 +25,12 @@ Source19: xinit-compat Patch1: xinit-1.0.2-client-session.patch -# Fixes scheduled to go upstream for the next release, fixing: -# https://bugzilla.redhat.com/show_bug.cgi?id=806491 -# https://bugzilla.redhat.com/show_bug.cgi?id=960955 -Patch2: 0001-Drop-RAWCPPFLAGS-when-generating-startx.patch -Patch3: 0002-startx-Under-Linux-start-X-on-the-current-VT.patch -Patch4: 0003-Makefile.am-Give-XINITDIR-a-default-value.patch +# submitted upstream, rhbz#1111684 +Patch2: 0001-startx-Pass-nolisten-tcp-by-default.patch BuildRequires: pkgconfig BuildRequires: libX11-devel -BuildRequires: autoconf -BuildRequires: automake BuildRequires: dbus-devel -BuildRequires: libtool -BuildRequires: xorg-x11-util-macros # NOTE: startx needs xauth in order to run, but that is not picked up # automatically by rpm. (Bug #173684) Requires: xorg-x11-xauth @@ -60,11 +52,8 @@ Allows legacy ~/.xsession and ~/.Xclients files to be used from display managers %setup -q -n %{pkgname}-%{version} %patch1 -p1 -b .client-session %patch2 -p1 -%patch3 -p1 -%patch4 -p1 %build -autoreconf -fi %configure make %{?_smp_mflags} @@ -116,6 +105,14 @@ install -p -m644 -D %{SOURCE18} $RPM_BUILD_ROOT%{_datadir}/xsessions/xinit-compa %{_datadir}/xsessions/xinit-compat.desktop %changelog +* Thu Sep 11 2014 Hans de Goede - 1.3.4-1 +- New upstream release 1.3.4 +- Resolves #806491 #990213 #1006029 +- Remove stale ck-xinit-session references from xinitrc-common (#910969) +- Make startx pass "-nolisten tcp" by default, use -listen as server + option to disable this (#1111684) +- Teach Xclients script about lxde (#488602) + * Mon Aug 18 2014 Fedora Release Engineering - 1.3.2-13 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild @@ -286,7 +283,7 @@ install -p -m644 -D %{SOURCE18} $RPM_BUILD_ROOT%{_datadir}/xsessions/xinit-compa * Mon May 21 2007 Adam Jackson 1.0.2-21 - localuser.sh: Run silently. -* Sat Apr 22 2007 Matthias Clasen 1.0.2-20 +* Sat Apr 21 2007 Matthias Clasen 1.0.2-20 - Don't install INSTALL * Thu Apr 19 2007 Warren Togami 1.0.2-19