Go to file
Keith Packard 523d35e3e1 os: Use CloseDownFileDescriptor from AbortClient, including ospoll_remove
AbortClient performs most of the same operations as
CloseDownFileDescriptor except that it doesn't call ospoll_remove,
leaving that unaware that the file descriptor has been closed.

If the file descriptor is re-used before the server comes back around
to clean up, and that new file descriptor is passed to SetNotifyFd,
then that function will mistakenly re-interpret the stale ClientPtr
returned by ospoll_data as a struct notify * instead and mangle data
badly.

To fix this, the patch does:

1) Change CloseDownFileDescriptor so that it can be called multiple
   times on the same OsCommPtr. The calls related to the file
   descriptor are moved inside the check for trans_conn and
   oc->trans_conn is set to NULL after cleaning up.

2) Move the XdmcpCloseDisplay call into CloseDownFileDescriptor. I
   don't think the actually matters as we just need to know at some
   point that the session client has exited. Moving it avoids the
   possibility of having this accidentally trigger from another client
   with the same fd which closes down at around the same time.

3) Change AbortClient to call CloseDownFileDescriptor. This makes sure
   that all of the fd-related clean up happens in the same way
   everywhere, in particular ensures that ospoll is notified about the
   closed file descriptor at the time it is closed and not some time later.

Debian-bug: https://bugs.debian.org/862824
Reviewed-by: Adam Jackson <ajax@redhat.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
2017-06-13 09:56:34 -04:00
composite Add a Meson build system alongside autotools. 2017-04-26 15:25:27 -07:00
config Add a Meson build system alongside autotools. 2017-04-26 15:25:27 -07:00
damageext Add a Meson build system alongside autotools. 2017-04-26 15:25:27 -07:00
dbe Add a Meson build system alongside autotools. 2017-04-26 15:25:27 -07:00
dix dix: assume warping on the RootWindow always happens on visible coords 2017-06-07 14:34:29 +10:00
doc Rewrite the byte swapping macros. 2017-04-25 15:01:23 -07:00
dri3 meson: Make driprotos and libdrm optional 2017-05-10 14:43:13 -04:00
exa Add a Meson build system alongside autotools. 2017-04-26 15:25:27 -07:00
fb fb: remove some superfluous empty lines 2017-05-29 13:52:55 +10:00
glamor glamor: Clarify variable names in glamor_copy_cpu_fbo 2017-06-12 20:15:49 -07:00
glx meson: Fix glx build with DRI2 disabled. 2017-05-03 14:52:39 -04:00
hw modesetting: Validate the atom for enum properties 2017-06-13 08:58:46 +10:00
include Add meson.build for XWin server (v2) 2017-06-02 09:32:35 -07:00
m4 Add ax_pthread.m4 to m4/ 2016-05-29 19:20:51 -07:00
man Xserver.man: document more transports for -nolisten & -listen options 2015-10-28 14:16:28 -04:00
mi misprite: Clean up some preprocessor abuse 2017-05-18 16:59:02 -04:00
miext Add a Meson build system alongside autotools. 2017-04-26 15:25:27 -07:00
os os: Use CloseDownFileDescriptor from AbortClient, including ospoll_remove 2017-06-13 09:56:34 -04:00
present Add a Meson build system alongside autotools. 2017-04-26 15:25:27 -07:00
pseudoramiX Add a Meson build system alongside autotools. 2017-04-26 15:25:27 -07:00
randr Add a Meson build system alongside autotools. 2017-04-26 15:25:27 -07:00
record Add a Meson build system alongside autotools. 2017-04-26 15:25:27 -07:00
render Add a Meson build system alongside autotools. 2017-04-26 15:25:27 -07:00
test Remove support for unaligned swaps. 2017-04-25 15:01:23 -07:00
Xext meson: Fix enabling of xshmfence. 2017-06-02 09:04:10 -07:00
xfixes Add a Meson build system alongside autotools. 2017-04-26 15:25:27 -07:00
Xi Xi: Use WarpPointerProc hook on XI pointer warping implementation 2017-06-07 14:49:04 +10:00
xkb Add a Meson build system alongside autotools. 2017-04-26 15:25:27 -07:00
.dir-locals.el Add .dir-locals.el 2013-08-17 12:17:36 +02:00
.gitignore .gitignore: Add new autotools file 'test-driver' 2014-04-21 13:41:42 -07:00
autogen.sh autogen: Set a default subject prefix for patches 2016-02-08 17:41:38 -05:00
configure.ac hw/xwin: Remove pretense of Xv support 2017-06-02 09:32:32 -07:00
COPYING modesetting: Merge modesetting's COPYING into the xserver's. 2014-09-15 12:46:02 -07:00
devbook.am doc: Create a script to filter xmlto output 2015-01-05 14:24:06 -08:00
docbook.am docbook.am: embed css styles inside the HTML HEAD element 2011-09-21 14:07:49 -07:00
fix-miregion Change region implementation names to eliminate the 'mi' prefix 2010-06-05 17:47:32 -07:00
fix-miregion-private Change region implementation names to eliminate the 'mi' prefix 2010-06-05 17:47:32 -07:00
fix-patch-whitespace Rename region macros to eliminate screen argument 2010-06-05 18:59:00 -07:00
fix-region Rename region macros to eliminate screen argument 2010-06-05 18:59:00 -07:00
Makefile.am Makefile.am: make 'make distcheck' verify the meson build 2017-05-04 11:06:34 +10:00
manpages.am xorg: Change __XCONFIGFILE__ to XCONFIGFILE (and DIR) to fix scan.c. 2017-04-25 15:01:23 -07:00
meson_options.txt Add meson.build for XWin server (v2) 2017-06-02 09:32:35 -07:00
meson.build Add meson.build for XWin server (v2) 2017-06-02 09:32:35 -07:00
README README: Add link to fd.o CoC 2017-04-11 08:51:34 -04:00
xorg-server.m4 macros: clarify documentation 2012-11-05 13:24:57 -06:00
xorg-server.pc.in xfree86: link modules against Xorg symbols on Cygwin 2012-04-05 21:57:07 -05:00
xserver.ent.in doc: relocate xserver.ent in the package root directory 2011-05-14 11:22:26 -07:00

					X Server

The X server accepts requests from client applications to create windows,
which are (normally rectangular) "virtual screens" that the client program
can draw into.

Windows are then composed on the actual screen by the X server
(or by a separate composite manager) as directed by the window manager,
which usually communicates with the user via graphical controls such as buttons
and draggable titlebars and borders.

For a comprehensive overview of X Server and X Window System, consult the
following article:
https://en.wikipedia.org/wiki/X_server

All questions regarding this software should be directed at the
Xorg mailing list:

        https://lists.freedesktop.org/mailman/listinfo/xorg

Please submit bug reports to the Xorg bugzilla:

        https://bugs.freedesktop.org/enter_bug.cgi?product=xorg

The master development code repository can be found at:

        git://anongit.freedesktop.org/git/xorg/xserver

        https://cgit.freedesktop.org/xorg/xserver

For patch submission instructions, see:

	https://www.x.org/wiki/Development/Documentation/SubmittingPatches

For more information on the git code manager, see:

        https://wiki.x.org/wiki/GitPage

As with other projects hosted on freedesktop.org, X.Org follows its
Code of Conduct, based on the Contributor Covenant. Please conduct
yourself in a respectful and civilized manner when using the above
mailing lists, bug trackers, etc:

	https://www.freedesktop.org/wiki/CodeOfConduct