summaryrefslogtreecommitdiff
path: root/Xext
AgeCommit message (Collapse)AuthorFilesLines
2018-04-10Xext: Fix memory leaks in hashtable.Michal Srb1-0/+3
Do not forget to delete key and value of every item and the hashtable itself.
2018-04-02meson: Distribute more SDK headersThierry Reding1-0/+12
Install missing headers to the SDK directory to allow external modules to properly build against the SDK. After this commit, the list of files installed in the SDK include directory is the same as the list of files installed by the autotools-based build. Reviewed-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Thierry Reding <treding@nvidia.com>
2018-03-21Xext/shm: Downgrade from error to debug log output about successAlexander Volkov1-1/+1
Signed-off-by: Alexander Volkov <a.volkov@rusbitech.ru> Reviewed-by: Adam Jackson <ajax@redhat.com>
2018-03-14Xext/saver: Swap ScreenSaverSuspend 'suspend' field. Handle old XCB clients.Keith Packard1-2/+12
This field was defined as a Bool in the protocol headers and BOOL in xcb. Bool is not a valid type for protocol fields. It is defined as 'int' by Xdefs.h, which we expect to be 32-bits on all machines. The protocol headers and xcb have patches posted to switch to CARD32, which is at least well defined. This change adds the necessary byte swapping to handle other-endian clients with this 32-bit field, and then changes the request processing to compare all 32-bits against zero so that it works with both new and old clients. On MSB machines, Xlib will continue to work properly, but old XCB will not interoperate with the X server (either before or after this patch). Signed-off-by: Keith Packard <keithp@keithp.com> Reviewed-by: Mihai Moldovan <ionic@ionic.de> Reviewed-by: Adam Jackson <ajax@redhat.com>
2018-02-02shm, xwayland: prefer atomic close-on-exec without O_TMPFILEJan Beich1-2/+7
Signed-off-by: Jan Beich <jbeich@FreeBSD.org> Reviewed-by: Adam Jackson <ajax@redhat.com>
2018-01-18sync: Fix diffgreater comparisonDavid Weinehall1-1/+1
xsync: Fix diffgreater comparison While transitioning from CARD64 to int64, the GreaterThan call was mistakenly transformed into ">=". Part of this was fixed already in commit 8060196a3e80a3c0ad2c0abbe459416821cd366c This patch fixes the remaining issue. Signed-off-by: David Weinehall <david.weinehall@linux.intel.com> Reviewed-by: Keith Packard <keithp@keithp.com>
2017-11-14xres: Return the atom naming the type, not its internal type numberAdam Jackson1-13/+21
Signed-off-by: Adam Jackson <ajax@redhat.com>
2017-10-30Use ARRAY_SIZE all over the treeDaniel Martin2-6/+3
Roundhouse kick replacing the various (sizeof(foo)/sizeof(foo[0])) with the ARRAY_SIZE macro from dix.h when possible. A semantic patch for coccinelle has been used first. Additionally, a few macros have been inlined as they had only one or two users. Signed-off-by: Daniel Martin <consume.noise@gmail.com> Reviewed-by: Adam Jackson <ajax@redhat.com>
2017-10-12XShmGetImage: fix censoringNikolay Martynov1-6/+2
It looks like offsets calculated during image censoring are wrong. This results in black (empty) images returns. This fix is very similar to 6c6f09aac7f1d1367a042087b7681c7fdf1d1e0f that was applied to XGetImage Visually this fixes chromium/firefox window sharing in multiscreen configurations - without this patch most of the windows on 'secodnary' screens are black. This also should fix https://bugs.freedesktop.org/show_bug.cgi?id=101730. Signed-off-by: Nikolay Martynov <mar.kolya@gmail.com> Reviewed-by: Adam Jackson <ajax@redhat.com>
2017-10-10hw/xfree86: unvalidated lengthsNathan Kidd1-59/+70
This addresses: CVE-2017-12180 in XFree86-VidModeExtension CVE-2017-12181 in XFree86-DGA CVE-2017-12182 in XFree86-DRI Reviewed-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com> Reviewed-by: Julien Cristau <jcristau@debian.org> Signed-off-by: Nathan Kidd <nkidd@opentext.com> Signed-off-by: Julien Cristau <jcristau@debian.org>
2017-10-10Unvalidated lengthsNathan Kidd4-3/+10
v2: Add overflow check and remove unnecessary check (Julien Cristau) This addresses: CVE-2017-12184 in XINERAMA CVE-2017-12185 in MIT-SCREEN-SAVER CVE-2017-12186 in X-Resource CVE-2017-12187 in RENDER Reviewed-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com> Reviewed-by: Julien Cristau <jcristau@debian.org> Signed-off-by: Nathan Kidd <nkidd@opentext.com> Signed-off-by: Julien Cristau <jcristau@debian.org>
2017-10-04Xext/shm: Validate shmseg resource id (CVE-2017-13721)Michal Srb1-0/+1
Otherwise it can belong to a non-existing client and abort X server with FatalError "client not in use", or overwrite existing segment of another existing client. Signed-off-by: Julien Cristau <jcristau@debian.org>
2017-09-27sync: Fix delta value checkLouis-Francis Ratté-Boulianne1-1/+1
While transitionning from CARD64 to int64, the GreaterThan call as mistakenly been transformed into ">=". That was at least causing problems with Mutter. Signed-off-by: Louis-Francis Ratté-Boulianne <lfrb@collabora.com> Reviewed-by: Adam Jackson <ajax@redhat.com>
2017-09-20sync: Convert from "CARD64" to int64_t.Eric Anholt2-171/+154
The extension was using the name CARD64 to represent 64-bit values, with a #define from CARD64 to XSyncValue, a struct with a pair of 32-bit values representing a signed 64-bit value. This interfered with protocol headers using CARD64 to try to actually store a uint64_t. Now that stdint.h exists, let's just use that here, instead. v2: Fix alarm delta changes. v3: Do the potentially overflowing math as uint and convert to int afterward, out of C spec paranoia. Signed-off-by: Eric Anholt <eric@anholt.net> Reviewed-by: Keith Packard <keithp@keithp.com>
2017-06-20dix: Remove extension aliasesAdam Jackson1-2/+0
This appears to be essentially unused. The only known client-side library for the SELinux extension is xcb, which does not look for the name "Flask". The "SGI-GLX" alias for GLX appears to be a bit of superstition at this point, NVIDIA's driver does not expose it and Mesa does not check for it. Signed-off-by: Adam Jackson <ajax@redhat.com> Acked-by: Keith Packard <keithp@keithp.com>
2017-06-02meson: Fix enabling of xshmfence.Eric Anholt1-2/+2
I misspelled the enable flag, so DRI3 would throw BadImplementation when you tried to start any GL app. Same as in c7be7a688a78a34f61b90c0d95914e14b90b0cdc, we also convert it to #ifdef for consistency. Signed-off-by: Eric Anholt <eric@anholt.net> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
2017-05-11Drop workaround for pre-glibc linuxJulien Cristau1-7/+0
It seems unlikely anyone still needs to build against libc4/libc5. Reviewed-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Julien Cristau <jcristau@debian.org>
2017-04-26Add a Meson build system alongside autotools.Eric Anholt1-0/+61
This is a work in progress that builds Xvfb, Xephyr, Xwayland, Xnest, and Xdmx so far. The outline of Xquartz/Xwin support is in tree, but hasn't been built yet. The unit tests are also not done. The intent is to build this as a complete replacement for the autotools system, then eventually replace autotools. meson is faster to generate the build, faster to run the bulid, shorter to write the build files in, and less error-prone than autotools. v2: Fix indentation nits, move version declaration to project(), use existing meson_options for version-config.h's vendor name/web. Signed-off-by: Eric Anholt <eric@anholt.net> Acked-by: Keith Packard <keithp@keithp.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
2017-03-27dpms: Consolidate a bunch of stuff into Xext/dpms.cAdam Jackson3-11/+29
Most of this is a legacy of the old "extmod" design where you could load _some_ extensions dynamically but only if the server had been built with support for them in the first place. Note that since we now only initialize the DPMS extension if at least one screen supports it, we no longer need DPMSCapableFlag: if it would be false, we would never read its value. Signed-off-by: Adam Jackson <ajax@redhat.com> Reviewed-by: Eric Anholt <eric@anholt.net>
2017-03-27dix: Lift DPMS to a screen hookAdam Jackson3-50/+65
Following on from the previous change, this adds a DPMS hook to the ScreenRec and uses that to infer DPMS support. As a result we can drop the dpms stub code from Xext. Signed-off-by: Adam Jackson <ajax@redhat.com> Reviewed-by: Eric Anholt <eric@anholt.net>
2017-03-27xfree86: Clean up DPMS supportAdam Jackson1-1/+7
Rather than setting up a per-screen private, just conditionally initialize ScrnInfoRec::DPMSSet based on the config options, and inspect that to determine whether DPMS is supported. We also move the "turn the screen back on at CloseScreen" logic into the DPMS extension's (new) reset hook. This would be a behavior change for the non-xfree86 servers, if any of them had non-stub DPMS support. Signed-off-by: Adam Jackson <ajax@redhat.com> Reviewed-by: Eric Anholt <eric@anholt.net>
2017-03-15xinerama: Implement graphics exposures for window->pixmap copies (v4)Adam Jackson1-10/+60
This code is using GetImage to accumulate a logical view of the window image (since the windows will be clipped to their containing screen), and then PutImage to load that back into the pixmap. What it wasn't doing was constructing a region for the obscured areas of the window and emitting graphics exposures for same. v2: Fix coordinate translation when the source is the root window v3: Create sourceBox with the right coordinates initially instead of translating (Keith Packard) v4: Clamp the region to 15 bits to avoid overflow (Keith Packard) Signed-off-by: Adam Jackson <ajax@redhat.com>
2017-03-01dispatch: Mark swapped dispatch as _X_COLDAdam Jackson17-151/+151
This touches everything that ends up in the Xorg binary; the big missing part is GLX since that's all generated code. Cuts about 14k from the binary on amd64. Signed-off-by: Adam Jackson <ajax@redhat.com> Reviewed-by: Eric Anholt <eric@anholt.net>
2016-09-28xace: Don't censor window bordersKeith Packard1-7/+6
GetImage is allowed to return window border contents, so don't remove that from the returned image. Reviewed-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Keith Packard <keithp@keithp.com>
2016-09-28XF86VidMode: Fix free() on walked pointerHans de Goede1-1/+1
Based on: https://patchwork.freedesktop.org/patch/85636/ Rewritten to just not walk the pointer. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Reviewed-by: Emi Velikov <emil.l.velikov@gmail.com>
2016-09-28Xext: Fix a memory leakHans de Goede1-2/+2
Based on: https://patchwork.freedesktop.org/patch/85636/ Rewritten to also free the resources allocated by panoramix_setup_ids(). Signed-off-by: Hans de Goede <hdegoede@redhat.com> Reviewed-by: Emi Velikov <emil.l.velikov@gmail.com>
2016-09-13Xext/shm: Fix usage of F_GETFD to match standardJeremy Huddleston Sequoia1-1/+2
flags = fcntl(fd, F_GETFD) is compliant. fcntl(fd, F_GETFD, &flags) is non-compliant (Linux extension?) cf: http://pubs.opengroup.org/onlinepubs/9699919799/functions/fcntl.html Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com> Reviewed-by: Julien Cristau <jcristau@debian.org>
2016-09-02sync: Don't do return client->noClientExceptionAdam Jackson1-6/+6
Hasn't been necessary since: commit 92ed75ac59e2d3af149cddb962efd05fc8487750 Author: Jamey Sharp <jamey@minilop.net> Date: Mon May 10 20:22:05 2010 -0700 Eliminate boilerplate around client->noClientException. Signed-off-by: Adam Jackson <ajax@redhat.com> Reviewed-by: Eric Anholt <eric@anholt.net>
2016-08-16xv: Remove some dumb calls SendErrorToClientAdam Jackson1-3/+0
We already generate errors from the top level when non-Success is returned from a dispatch function, so really we were emitting errors twice. Signed-off-by: Adam Jackson <ajax@redhat.com> Reviewed-by: Daniel Stone <daniels@collabora.com>
2016-08-15xace: Fix XaceCensorImage to actually censor the right part of the imageAaron Plattner1-1/+2
The caller passes arguments into XaceCensorImage that are in window-relative coordinates. However, the pBuf that it uses to construct a temporary pixmap has its origin at (x, y) relative to the window in question. The code to convert the censor region into boxes adjusts for the Y coordinate, but leaves the X coordinate alone. The result is that if x is not zero, it censors the wrong part of the image. Fix this by just translating censorRegion into pixmap-relative coordinates and using the resulting boxes as-is. Reported-by: Fabien Lelaquais <Fabien.Lelaquais@roguewave.com> Link: https://lists.x.org/archives/xorg/2016-August/058165.html Reviewed-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Aaron Plattner <aplattner@nvidia.com>
2016-07-18Remove fd_set from Block/Wakeup handler APIKeith Packard2-16/+13
This removes the last uses of fd_set from the server interfaces outside of the OS layer itself. Signed-off-by: Keith Packard <keithp@keithp.com> Reviewed-by: Adam Jackson <ajax@redhat.com>
2016-07-18dix: Switch to the libXfont2 API (v2)Keith Packard1-2/+2
This new libXfont API eliminates exposing internal X server symbols to the font library, replacing those with a struct full of the entire API needed to use that library. v2: Use libXfont2 instead of libXfont_2 Signed-off-by: Keith Packard <keithp@keithp.com> Reviewed-by: Adam Jackson <ajax@redhat.com>
2016-07-15shm: Also censor images returned by ShmGetImageAndrew Eikum1-0/+17
We currently censor images from dix's GetImage, but not from ShmGetImage. This is a method to bypass XACE, creating a potential leak. We should censor in both methods. Reviewed-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
2016-06-21res: Simplify QueryClientPixmapBytesAdam Jackson1-94/+2
I suspect this code predates the common resource hooks for computing sizes. It's ugly in any case since the Resource extension shouldn't need to know which extensions can take a reference on pixmaps. Instead, let's just walk every resource for the client and sum up all the pixmap bytes that way. This might be slightly slower since we're calling the size func once for every resource. On the other hand, it might be slightly faster since we only walk the resource table once instead of 3-5 times. Probably a wash, and not really a performance path in any case. Acked-by: Michel Dänzer <michel.daenzer@amd.com> Signed-off-by: Adam Jackson <ajax@redhat.com>
2016-06-10xace: Remove the audit hooks and tune dispatchAdam Jackson2-33/+14
There are no in-tree consumers of the audit hooks, and they are in any case redundant with the dtrace dispatch hooks. Neither is there any in-tree user of the core request dispatch hook. The extension hook is only used for non-default security cases, but in the absence of LTO we always have to take the function call into XaceHookDispatch to find out that there's no callback registered. Cc: Eamon Walsh <ewalsh@tycho.nsa.gov> Signed-off-by: Adam Jackson <ajax@redhat.com> Reviewed-by: Keith Packard <keithp@keithp.com>
2016-06-08dix: Use OsSignal() not signal()Adam Jackson2-7/+4
As the man page for the latter states: The effects of signal() in a multithreaded process are unspecified. We already have an interface to call sigaction() instead, use it. Signed-off-by: Adam Jackson <ajax@redhat.com> Reviewed-by: Keith Packard <keithp@keithp.com>
2016-05-11dix: Remove pointless client-state callbacksAdam Jackson1-22/+0
Private storage is pre-zeroed by the private system itself. Signed-off-by: Adam Jackson <ajax@redhat.com> Reviewed-by: Eric Anholt <eric@anholt.net>
2016-05-04dix: Push UpdateCurrentTimeIf down out of the main loopAdam Jackson1-0/+1
This was added in: commit 312910b4e34215aaa50fc0c6092684d5878dc32f Author: Chase Douglas <chase.douglas@canonical.com> Date: Wed Apr 18 11:15:40 2012 -0700 Update currentTime in dispatch loop Unfortunately this is equivalent to calling GetTimeInMillis() once per request. In the absolute best case (as on Linux) you're only hitting the vDSO; on other platforms that's a syscall. Either way it puts a pretty hard ceiling on request throughput. Instead, push the call down to the requests that need it; basically, grab processing and event generation. Cc: Chase Douglas <chase.douglas@canonical.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Adam Jackson <ajax@redhat.com>
2016-04-29dix: Squash some new gcc6 warningsAdam Jackson2-3/+3
-Wlogical-op now tells us: devices.c:1685:23: warning: logical ‘and’ of equal expressions Reviewed-by: Julien Cristau <jcristau@debian.org> Signed-off-by: Adam Jackson <ajax@redhat.com>
2016-03-14security: Fix reversed commentÁngel González1-1/+1
Commit 6045506be0cebca4ebbe943ae77f020aafa703d4 changed back the behavior to only allow the trusted extensions to the untrusted clients, but left the 8b5d21cc1d1f4e9d20e5d5eca44cb1e60a419763 comment intended for Security*Un*trustedExtensions saying that "untrusted clients shouldn't have access to these". Reviewed-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Ángel González <ingenit@zoho.com>
2016-03-14Fix the typo from the previous patch, d'ohAdam Jackson1-1/+1
Signed-off-by: Adam Jackson <ajax@redhat.com>
2016-03-14Xext/vidmode: Reduce verbosity of GetModeLine debug messagesChris Wilson1-106/+106
In commit f175cf45aebcdda53f3ae49c0eaf27da1f194e92 Author: Olivier Fourdan <ofourdan@redhat.com> Date: Wed Feb 10 09:34:34 2016 +0100 vidmode: move to a separate library of its own the verbosity of some old debug messages (which print the reply to every GetModeLine client request and others) was increased leading to lots of log spam. Downgrade the logging back to DebugF. [ajax: Fix a typo so it compiles.] Reviewed-by: Adam Jackson <ajax@redhat.com> References: https://bugs.freedesktop.org/show_bug.cgi?id=94515 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Olivier Fourdan <ofourdan@redhat.com>
2016-03-08xvmc: Fix unchecked AddResourceJulien Cristau1-3/+14
Reviewed-by: Rémi Cardona <remi@gentoo.org> Signed-off-by: Julien Cristau <jcristau@debian.org>
2016-03-02xv: fix double free in AddResource failure caseJulien Cristau1-3/+2
XvdiDestroyVideoNotifyList already frees the list if AddResource fails, so don't do it twice. And set tpn->client to NULL explicitly to avoid confusing uninitialized memory with a valid value. Reviewed-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Julien Cristau <jcristau@debian.org>
2016-03-02xv: Fix unchecked AddResourceAdam Jackson1-2/+4
Reviewed-by: Julien Cristau <jcristau@debian.org> Signed-off-by: Adam Jackson <ajax@redhat.com>
2016-03-01vidmode: build without xf86vidmodeprotoOlivier Fourdan1-0/+4
git commit f175cf45: vidmode: move to a separate library of its own introduced a regression where the xserver would not build when xf86vidmodeproto is not installed even if the configure option "--disable-xf86vidmode" is specified. Fix build failure when xf86vidmodeproto is not installed. Reviewed-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
2016-02-29vidmode: move to a separate library of its ownOlivier Fourdan2-2/+2152
XVidMode extension might be useful to non hardware servers as well (e.g. Xwayand) so that applications that rely on it (e.g. lot of older games) can at least have read access to XVidMode. But the implementation is very XFree86 centric, so the idea is to add a bunch of vfunc that other non-XFree86 servers can hook up into to provide a similar functionality. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=87806 Reviewed-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
2015-12-08sync: Don't allow creating a system counter before sync is initializedAdam Jackson1-18/+3
It probably doesn't work very well since there's other extension setup we're not doing on this path, and in any event it's not a thing that happens currently. Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Adam Jackson <ajax@redhat.com>
2015-12-01Xext/xselinux: Use NotifyFd interfaceKeith Packard1-14/+4
Replace block/wakeup handlers with SetNotifyFd. Much nicer now. Reviewed-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Keith Packard <keithp@keithp.com>
2015-10-27Xext: fix build with --disable-xaceJulien Cristau1-0/+2
Regression from 990cf5b2828f73dc7a07f1e38f608af39acfd81d Signed-off-by: Julien Cristau <jcristau@debian.org> Cc: Andrew Eikum <aeikum@codeweavers.com> Cc: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>