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)
This commit is contained in:
Hans de Goede 2014-09-11 19:47:04 +02:00
parent bbb3e54fa1
commit a2a0799ba4
11 changed files with 113 additions and 293 deletions

1
.gitignore vendored
View File

@ -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

View File

@ -1,26 +0,0 @@
From 90b6f5dfcb9c9f41dcbd59b006ea703f2f78b3b1 Mon Sep 17 00:00:00 2001
From: Hans de Goede <hdegoede@redhat.com>
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 <hdegoede@redhat.com>
---
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

View File

@ -0,0 +1,73 @@
From a750c23c155f889cbb29a3c879b1e19f2707a823 Mon Sep 17 00:00:00 2001
From: Hans de Goede <hdegoede@redhat.com>
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 <hdegoede@redhat.com>
---
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

View File

@ -1,50 +0,0 @@
From e222d3b978499d1e9293dcbe97bb8349da8ad4ea Mon Sep 17 00:00:00 2001
From: Hans de Goede <hdegoede@redhat.com>
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 <hdegoede@redhat.com>
---
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

View File

@ -1,28 +0,0 @@
From ab3df9890d3056f217c1fce11101e362db1bdcf7 Mon Sep 17 00:00:00 2001
From: Hans de Goede <hdegoede@redhat.com>
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 <hdegoede@redhat.com>
---
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

View File

@ -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

View File

@ -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 <sys/types.h>
#include <sys/wait.h>
#include <paths.h>
#include <stdlib.h>
#include <string.h>
#include <syslog.h>
#include <unistd.h>
#include <ck-connector.h>
#include <dbus/dbus.h>
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);
}

View File

@ -1 +1 @@
9c0943cbd83e489ad1b05221b97efd44 xinit-1.3.2.tar.bz2
4e928452dfaf73851413a2d8b8c76388 xinit-1.3.4.tar.bz2

View File

@ -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]);

View File

@ -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

View File

@ -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 <hdegoede@redhat.com> - 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 <rel-eng@lists.fedoraproject.org> - 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 <ajax@redhat.com> 1.0.2-21
- localuser.sh: Run silently.
* Sat Apr 22 2007 Matthias Clasen <mclasen@redhat.com> 1.0.2-20
* Sat Apr 21 2007 Matthias Clasen <mclasen@redhat.com> 1.0.2-20
- Don't install INSTALL
* Thu Apr 19 2007 Warren Togami <wtogami@redhat.com> 1.0.2-19