aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/lib/X11
Commit message (Collapse)AuthorAgeFilesLines
* _XDefaultError: set XlibDisplayIOError flag before calling exitArthur Huillet2017-03-261-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | _XReply isn't reentrant, and it can lead to deadlocks when the default error handler is called: _XDefaultError calls exit(1). It is called indirectly by _XReply when a X protocol error comes in that isn't filtered/handled by an extension or the application. This means that if the application (or one of its loaded shared libraries such as the NVIDIA OpenGL driver) has registered any _fini destructor, _fini will get called while still on the call stack of _XReply. If the destructor interacts with the X server and calls _XReply, it will hit a deadlock, looping on the following in _XReply: ConditionWait(dpy, dpy->xcb->reply_notify); It is legal for an application to make Xlib calls during _fini, and that is useful for an OpenGL driver to avoid resource leaks on the X server side, for example in the dlopen/dlclose case. However, the driver can not readily tell whether its _fini is being called because Xlib called exit, or for another reason (dlclose), so it is hard to cleanly work around this issue in the driver. This change makes it so _XReply effectively becomes a no-op when called after _XDefaultError was called, as though an XIOError had happened. The dpy connection isn't broken at that point, but any call to _XReply is going to hang. This is a bit of a kludge, because the more correct solution would be to make _XReply reentrant, maybe by broadcasting the reply_notify condition before calling the default error handler. However, such a change would carry a grater risk of introducing regressions in Xlib. This change will drop some valid requests on the floor, but this should not matter, as it will only do so in the case where the application is dying: X will clean up after it once exit() is done running. There is the case of XSetCloseDownMode(RETAIN_PERMANENT), but an application using that and wishing to clean up resources in _fini would currently be hitting a deadlock, which is hardly a better situation. Signed-off-by: Aaron Plattner <aplattner@nvidia.com> Reviewed-by: Jamey Sharp <jamey@minilop.net>
* Fix wrong Xfree in XListFonts failure pathJulien Cristau2017-03-261-2/+4
| | | | | | | | | | | | 'ch' gets moved inside the allocated buffer as we're looping through fonts, so keep a reference to the start of the buffer so we can pass that to Xfree in the failure case. Fixes: commit 20a3f99eba5001925b8b313da3accb7900eb1927 "Plug a memory leak" Signed-off-by: Julien Cristau <jcristau@debian.org> Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* libNX_X11: Fully drop loadable i18n module support in libNX_X11.Mike Gabriel2017-03-036-2340/+3
| | | | | | - Support for i18n in libNX_X11 is static only, has ever been. - Thus, the files XlcSL.[co], XlcDL.[co], XDefaultIMIF.[co], XDefaultOMIF.[co] and lcDynamic.[co] become obsolete.
* libNX_X11/lcUTF8.c: Drop not-used X11/lcUniConv/ascii.h.Mike Gabriel2017-03-032-28/+0
|
* doc/libNX_X11/lcUniConv: Move over the rather-documentary files ↵Mike Gabriel2017-03-032-1606/+0
| | | | 8bit_tab_to_h.c and cjk_tab_to_h.c to nx-libs's doc/ folder.
* drop platform support: unifdef sgi.Mike Gabriel2017-02-085-13/+2
| | | | Relates to ArcticaProject/nx-libs#275.
* drop platform support: unifdef QNX.Mike Gabriel2017-02-082-5/+1
| | | | Relates to ArcticaProject/nx-libs#275.
* drop platform support: unifdef __osf__.Mike Gabriel2017-02-081-6/+1
| | | | Fixes ArcticaProject/nx-libs#288.
* drop platform support: unifdef AIXV3, AIXV4 (and AIXrt, AIX386).Mike Gabriel2017-02-083-56/+3
| | | | Fixes ArcticaProject/nx-libs#274.
* drop platform support: unifdef hpux and __hppa__.Mike Gabriel2017-02-085-131/+6
| | | | Fixes ArcticaProject/nx-libs#273.
* drop platform support: unifdef Lynx.Mike Gabriel2017-02-085-14/+2
| | | | Fixes ArcticaProject/nx-libs#272.
* drop platform support: unifdef __UNIXOS2__.Mike Gabriel2017-02-0816-596/+8
| | | | Fixes ArcticaProject/nx-libs#271.
* add .gitignore filesUlrich Sibiller2016-11-171-0/+1
|
* LibX11: drop unused xlibi18nUlrich Sibiller2016-11-1715-304/+0
|
* nx-X11/lib/X11/Imakefile: essentially revert 5a90a63.Mihai Moldovan2016-11-051-6/+21
| | | | | | | | Creating libX11 symlinks breaks our builds in clean environments. Drop this feature for now. It must be rewritten to only create the symlinks after everything has been built.
* libX11 + Xserver: fix missing define warningUlrich Sibiller2016-11-031-1/+1
| | | | | | warning: "XTRANS_SEND_FDS" is not defined [-Wundef] This define came in via the recent xtrans update.
* xtrans: fix compilation warnings because of missing XTRANS_SEND_FDSUlrich Sibiller2016-11-021-1/+1
|
* Remove OS2PIPECONN transportUlrich Sibiller2016-11-021-2/+2
|
* Remove unused TLI ("STREAMSCONN") codeUlrich Sibiller2016-11-021-7/+0
|
* remove DECnet supportUlrich Sibiller2016-11-021-29/+13
| | | | just as Xorg upstream did
* remove unused mkks.shUlrich Sibiller2016-11-021-11/+0
| | | | although upstream still includes it.
* remove unused jump_* files from libX11Ulrich Sibiller2016-11-023-1618/+0
|
* remove *-def.cppUlrich Sibiller2016-11-021-2011/+0
| | | | never used
* libX11/Imakefile: handle libX11 linksUlrich Sibiller2016-11-021-0/+27
| | | | | | | | | | Create libX11* link in exports/lib. This simplifies running nxagent from the build directory. This also adds a clean rule to remove the libX11 links as well as the libNX_X11 links which was not done before. Fixes ArcticaProject/nx-libs#234
* libX11/Imakefile: add missing dependencies on ks_tables.hUlrich Sibiller2016-11-021-0/+3
|
* Imakefile cleanup: Delete all ancient Vcs comments stemming from SVN times ↵Mike Gabriel2016-10-317-7/+0
| | | | | | of X.org and XFree86. Fixes ArcticaProject/nx-libs#250.
* Plug a memory leakEmilio Pozuelo Monfort2016-10-271-0/+2
| | | | | | | | This was introduced in 8ea762f. Reported-by: Julien Cristau <jcristau@debian.org> Signed-off-by: Emilio Pozuelo Monfort <pochu@debian.org> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* LRGB.c: Fix label defined but not usedUlrich Sibiller2016-10-201-3/+0
| | | | | | | LRGB.c: In function ‘LINEAR_RGB_InitSCCData’: LRGB.c:798:1: warning: label ‘FreeBlueTblElements’ defined but not used [-Wunused-label] FreeBlueTblElements: ^
* Fixes: warning: variable 'req' set but not,usedwalter harms2016-10-2017-18/+18
| | | | | | | | | | Fixes: warning: variable 'req' set but not used [-Wunused-but-set-variable] by marking req _X_UNUSED Solution was discussed on xorg-devel ML Peter Hutter, Alan Coopersmith Re: [PATCH libX11 3/5] fix: warning: pointer targets in passing argument 2 of '_XSend' differ in signedness [-Wpointer-sign] Signed-off-by: harms wharms@bfs.de
* fix: warning: pointer targets in passing argument 2 of '_XSend' differ in ↵walter harms2016-10-201-2/+2
| | | | | | | signedness [-Wpointer-sign] fix signess warning by casting Signed-off-by: walter harms <wharms@bfs.de>
* no need to check args for Xfree()walter harms2016-10-201-41/+33
| | | | | | simplify code Signed-off-by: walter harms <wharms@bfs.de>
* remove stray externwalter harms2016-10-201-1/+1
| | | | | | remove stray extern Signed-off-by: walter harms <wharms@bfs.de>
* Fix warnings in XlibInt.cUlrich Sibiller2016-10-202-0/+7
| | | | | | | | | | | | XlibInt.c: In function ‘_XIOError’: XlibInt.c:3750:1: warning: ‘noreturn’ function does return [enabled by default] } After fixing the above a new warning came up, which is also fixed now: XlibInt.c: In function ‘_XIOError’: XlibInt.c:3750:1: warning: control reaches end of non-void function [-Wreturn-type] }
* imLcIm.c: Fix unused variablesUlrich Sibiller2016-10-201-3/+4
| | | | | | | | | imLcIm.c: In function ‘_XimCreateDefaultTree’: imLcIm.c:525:11: warning: unused variable ‘cachedir’ [-Wunused-variable] char *cachedir = NULL; ^ imLcIm.c:521:35: warning: variable ‘intname’ set but not used [-Wunused-but-set-variable] char *name, *tmpname = NULL, *intname;
* Pending.c: Fix compilation warningUlrich Sibiller2016-10-201-2/+2
| | | | | | | Pending.c: In function ‘XEventsQueued’: Pending.c:44:5: warning: format ‘%p’ expects argument of type ‘void *’, but argument 3 has type ‘struct Display *’ [-Wformat=] fprintf(stderr, "\nXEventsQueued: Called with a display at [%p].\n", dpy); ^
* Fix libX11 implicit declaration warningsUlrich Sibiller2016-10-201-2/+2
| | | | | | | | all _X11Trans* functions lead to a warnign like this: implicit declaration of function ‘_X11TransOpenCOTSClient’ [-Wimplicit-function-declaration] Fix it by partly reverting d3ae0b2c9559e70448746240caaf5634c78d0eef (which removed too much)
* Drop nx-X11/lib/X11/libX11.elist. Not needed for anything nowadays. Probably ↵Mike Gabriel2016-10-201-41/+0
| | | | never was needed in nx-X11.
* Validation of server responses in XGetImage()Tobias Stoeckmann2016-10-191-9/+20
| | | | | | | | | | Check if enough bytes were received for specified image type and geometry. Otherwise GetPixel and other functions could trigger an out of boundary read later on. Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org> Reviewed-by: Matthieu Herrb <matthieu@herrb.eu> Backported-to-NX-by: Ulrich Sibiller <uli42@gmx.de>
* The validation of server responses avoids out of boundary accesses.Tobias Stoeckmann2016-10-193-11/+27
| | | | | | | | | v2: FontNames.c return a NULL list whenever a single length field from the server is incohent. Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org> Reviewed-by: Matthieu Herrb <matthieu@herrb.eu> Backported-to-NX-by: Ulrich Sibiller <uli42@gmx.de>
* xcms: use size_t for pointer offsets passed to strncmpAlan Coopersmith2016-10-195-10/+10
| | | | | | | | | | | | | instead of converting to int and back Fixes clang warnings of the form: HVC.c:190:43: warning: implicit conversion changes signedness: 'int' to 'unsigned long' [-Wsign-conversion] if (strncmp(spec, _XcmsTekHVC_prefix, n) != 0) { ~~~~~~~ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Backported-to-NX-by: Ulrich Sibiller <uli42@gmx.de>
* xcms: use unsigned indexes when looping through unsigned valuesAlan Coopersmith2016-10-196-11/+11
| | | | | | | | | | | | | Clears many gcc warnings of the form: uvY.c: In function ‘XcmsCIEuvYToCIEXYZ’: uvY.c:263:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for (i = 0; i < nColors; i++, pColor++) { ^ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Backported-to-NX-by: Ulrich Sibiller <uli42@gmx.de>
* xcms: use size_t for strlen/sizeof values instead of converting to int & backAlan Coopersmith2016-10-192-2/+2
| | | | | | | | | | | | | | | | | | | | | Fixes gcc warnings of the form: IdOfPr.c: In function ‘XcmsFormatOfPrefix’: IdOfPr.c:69:32: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if ((len = strlen(prefix)) >= sizeof(string_buf)) { ^ IdOfPr.c:83:11: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if (len >= sizeof(string_buf)) Xfree(string_lowered); ^ IdOfPr.c:97:11: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if (len >= sizeof(string_buf)) Xfree(string_lowered); ^ IdOfPr.c:104:13: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if (len >= sizeof(string_buf)) Xfree(string_lowered); ^ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Backported-to-NX-by: Ulrich Sibiller <uli42@gmx.de>
* Xlib.h: Fix macros imitating C functions.Dominik Muth2016-10-191-17/+17
| | | | | | | | | | | | | | | | | | The basic rule "put parantheses around macro parameters" should be observed where possible. Otherwise code like ConnectionNumber(foo = bar); fails to compile. (It obviously passes if ConnectionNumber is a C function.) There are several other macros amended for the same reason. This bug appeared while building http://ioccc.org/1993/cmills.c, so historically it was not present. Signed-off-by: Dominik Muth <muth@nxdomain.no-ip.biz> Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Backported-to-NX-by: Ulrich Sibiller <uli42@gmx.de>
* XKB: fix XkbGetKeyboardByName with Xming serverOlivier Fourdan2016-10-191-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | XkbGetKeyboardByName relies on flags to read the data from the server. If the X server sends us the wrong flags or if a subreply is smaller than it should be, XkbGetKeyboardByName will not read all the available data and leave data in the buffer, which will cause the next _XReply() to fail with: [xcb] Extra reply data still left in queue [xcb] This is most likely caused by a broken X extension library [xcb] Aborting, sorry about that. xcb_io.c:576: _XReply: Assertion `!xcb_xlib_extra_reply_data_left' failed. Aborted Check if there is some extra data left at the end of XkbGetKeyboardByName() and discard that data if any is found. Many thanks to Peter Hutterer <peter.hutterer@who-t.net> for finding the root cause of the issue and Adam Jackson <ajax@redhat.com> for helping with the analysis! Signed-off-by: Olivier Fourdan <ofourdan@redhat.com> Reviewed-by: Daniel Stone <daniels@collabora.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Backported-to-NX-by: Ulrich Sibiller <uli42@gmx.de>
* lcPubWrap: replace malloc(strlen) + strcpy with strdupAlan Coopersmith2016-10-191-2/+1
| | | | | | Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Adam Jackson <ajax@redhat.com> Backported-to-NX-by: Ulrich Sibiller <uli42@gmx.de>
* XlcDL.c: reduce code duplicationAlan Coopersmith2016-10-191-12/+10
| | | | | | Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Adam Jackson <ajax@redhat.com> Backported-to-NX-by: Ulrich Sibiller <uli42@gmx.de>
* XlcDL.c: replace strcpy+strcat sequences with snprintfAlan Coopersmith2016-10-191-6/+8
| | | | | | Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Adam Jackson <ajax@redhat.com> Backported-to-NX-by: Ulrich Sibiller <uli42@gmx.de>
* XDefaultOMIF: Remove comments referring to ancient Sun bug idsAlan Coopersmith2016-10-191-14/+1
| | | | | | Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Adam Jackson <ajax@redhat.com> Backported-to-NX-by: Ulrich Sibiller <uli42@gmx.de>
* XDefaultOMIF: additional code simplificationAlan Coopersmith2016-10-191-32/+11
| | | | | | | | | | | Don't need to test for a case that we already returned for, don't need to store a count that will only ever be 1 if we didn't return, don't need to increment pointers to allow storing more than one item when we can only ever possibly do one. Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Adam Jackson <ajax@redhat.com> Backported-to-NX-by: Ulrich Sibiller <uli42@gmx.de>
* XDefaultOMIF: replace strlen+Xmalloc+strcpy with strdupAlan Coopersmith2016-10-191-15/+8
| | | | | | | | | Code seems to have been originally written to handle appending multiple strings, but only ever operates on a single string. Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Adam Jackson <ajax@redhat.com> Backported-to-NX-by: Ulrich Sibiller <uli42@gmx.de>