Commit graph

1362 commits

Author SHA1 Message Date
Albert Astals Cid
c8bcc19970 locale.dir: Add ast_ES.UTF-8
With this patch xev properly reports
   XLookupString gives 2 bytes: (c2 b4) "´"
for the dead_acute key when using the Asturian locale
2018-11-12 18:02:40 +00:00
Albert Astals Cid
117bb310b4 compose.dir: Add ast_ES.UTF-8
With this patch one can properly type dead keys like á when using the
Asturian locale
2018-11-12 18:02:40 +00:00
Alan Coopersmith
d7e22252d6 Remove documentation of obsolete B16 & B32 tags in specs/libX11
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2018-11-10 13:30:47 -08:00
Matt Turner
f3c978476e libX11 1.6.7
Signed-off-by: Matt Turner <mattst88@gmail.com>
2018-10-09 10:26:12 -04:00
Michel Dänzer
823a0f8a82 poll_for_event: Allow using xcb_poll_for_queued_event
It avoids reading from the display connection again in cases where that
was already done.

Suggested-by: Uli Schlachter <psychon@znc.in>
Reviewed-by: Uli Schlachter <psychon@znc.in>
2018-09-28 17:24:17 +02:00
Michel Dänzer
406afe4b0f poll_for_response: Call poll_for_event again if xcb_poll_for_reply fails
If xcb_poll_for_reply fails to find a reply, poll_for_response would
always return NULL. However, xcb_poll_for_reply may have read events
from the display connection while looking for a reply. In that case,
returning NULL from poll_for_response is wrong and can result in the
client hanging, e.g. because it returns to waiting for the display
connection file descriptor becoming readable after XPending incorrectly
returned 0 pending events.

The solution is to call poll_for_event again after xcb_poll_for_reply
returned 0. This will return the first of any events read by
xcb_poll_for_reply.

Fixes issue #79.

Reported-by: Yuxuan Shui <yshuiv7@gmail.com>
Bugzilla: https://bugs.freedesktop.org/108008
Bugzilla: https://bugs.freedesktop.org/107992
Reviewed-by: Adam Jackson <ajax@redhat.com>
2018-09-25 17:10:58 +02:00
Bhavi Dhingra
d0416863d5 XcmsLookupColor: fully initialize XColor structs passed to _XColor_to_XcmsRGB
Fixes https://gitlab.freedesktop.org/xorg/lib/libx11/issues/44
aka https://bugs.freedesktop.org/show_bug.cgi?id=92154

Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2018-09-22 16:21:14 -07:00
Matthieu Herrb
733f64bfeb libX11 1.6.6
Signed-off-by: Matthieu Herrb <matthieu@herrb.eu>
2018-08-21 16:54:50 +02:00
Matthieu Herrb
173704243f Remove statement with no effect.
Signed-off-by: Matthieu Herrb <matthieu@herrb.eu>
2018-08-21 16:53:40 +02:00
Tobias Stoeckmann
e83722768f Fixed crash on invalid reply (CVE-2018-14598).
If the server sends a reply in which even the first string would
overflow the transmitted bytes, list[0] (or flist[0]) will be set to
NULL and a count of 0 is returned.

If the resulting list is freed with XFreeExtensionList or
XFreeFontPath later on, the first Xfree call:

    Xfree (list[0]-1)
 turns into
    Xfree (NULL-1)

which will most likely trigger a segmentation fault.

I have modified the code to return NULL if the first string would
overflow, thus protecting the freeing functions later on.

Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org>
2018-08-21 16:43:22 +02:00
Tobias Stoeckmann
dbf72805fd Fixed out of boundary write (CVE-2018-14600).
The length value is interpreted as signed char on many systems
(depending on default signedness of char), which can lead to an out of
boundary write up to 128 bytes in front of the allocated storage, but
limited to NUL byte(s).

Casting the length value to unsigned char fixes the problem and allows
string values with up to 255 characters.

Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org>
2018-08-21 16:43:06 +02:00
Tobias Stoeckmann
b469da1430 Fixed off-by-one writes (CVE-2018-14599).
The functions XGetFontPath, XListExtensions, and XListFonts are
vulnerable to an off-by-one override on malicious server responses.

The server replies consist of chunks consisting of a length byte
followed by actual string, which is not NUL-terminated.

While parsing the response, the length byte is overridden with '\0',
thus the memory area can be used as storage of C strings later on. To
be able to NUL-terminate the last string, the buffer is reserved with
an additional byte of space.

For a boundary check, the variable chend (end of ch) was introduced,
pointing at the end of the buffer which ch initially points to.
Unfortunately there is a difference in handling "the end of ch".

While chend points at the first byte that must not be written to,
the for-loop uses chend as the last byte that can be written to.

Therefore, an off-by-one can occur.

I have refactored the code so chend actually points to the last byte
that can be written to without an out of boundary access. As it is not
possible to achieve "ch + length < chend" and "ch + length + 1 > chend"
with the corrected chend meaning, I removed the inner if-check.

Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org>
2018-08-21 16:42:29 +02:00
Tobias Stoeckmann
d81da209fd Validation of server response in XListHosts.
If a server sends an incorrect length in its response, a client is prone
to perform an out of boundary read while processing the data.

The length field of xHostEntry is used to specify the amount of bytes
used to represent the address. It is 16 bit, which means that it is not
possible to perform an arbitrary memory access, but it might be enough
to read sensitive information, e.g. malloc-related pointers and offsets.

Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org>
Reviewed-by: Matthieu Herrb <matthieu@herrb.eu>
2018-07-17 15:23:14 +02:00
Samuel Thibault
b676e62377 XkbOpenDisplay.3: fix typo
XkbOpenDisplay returns a pointer to Display, not a Display.

Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
2018-06-13 15:46:58 +02:00
Martin Natano
9c5845ff0d Don't rebuild ks_tables.h if nothing changed.
ks_tables.h is always considered out of date due to the forced rebuild
of the makekeys util. This means the file is also rebuilt during 'make
install', which is usually performed as root, which can to lead
permission problems later on.

Signed-off-by: Martin Natano <natano@natano.net>
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2018-05-13 18:38:58 -07:00
Alan Coopersmith
796f754cba Change fall through comment in lcDB.c to match gcc's requirements
Needs to match one of the regexps shown under
https://gcc.gnu.org/onlinedocs/gcc-7.3.0/gcc/Warning-Options.html#index-Wimplicit-fallthrough

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2018-05-05 14:45:57 -07:00
Alan Coopersmith
82ca630875 Use size_t for buffer sizes in SetHints.c
These variables store values returned from strlen() as a size_t
and are passed to Xmalloc, which expects a size_t, so lets stop
converting back and forth to int along the way.

Reported by: Konstantin SKliarov
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Reviewed-by: Matthieu Herrb <matthieu@herrb.eu>
2018-03-30 15:46:18 -07:00
Bhavi Dhingra
50a5a98984 Fix possible memory leak in cmsProp.c:140
https://bugs.freedesktop.org/show_bug.cgi?id=96814

Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2018-03-24 11:13:46 -07:00
Michal Srb
a9dafdd57c Use flexible array member instead of fake size.
The _XimCacheStruct structure is followed in memory by two strings containing
fname and encoding. The memory was accessed using the last member of the
structure `char fname[1]`. That is a lie, prohibits us from using sizeof and
confuses checkers. Lets declare it properly as a flexible array, so compilers
don't complain about writing past that array. As bonus we can replace the
XOffsetOf with regular sizeof.

Fixes GCC8 error:
  In function 'strcpy',
      inlined from '_XimWriteCachedDefaultTree' at imLcIm.c:479:5,
      inlined from '_XimCreateDefaultTree' at imLcIm.c:616:2,
      inlined from '_XimLocalOpenIM' at imLcIm.c:700:5:
  /usr/include/bits/string_fortified.h:90:10: error: '__builtin_strcpy'
  forming offset 2 is out of the bounds [0, 1] [-Werror=array-bounds]
     return __builtin___strcpy_chk (__dest, __src, __bos (__dest));

Caused by this line seemingly writing past the fname[1] array:
  imLcIm.c:479:  strcpy (m->fname+strlen(name)+1, encoding);

Reviewed-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2018-03-23 14:32:05 +10:00
Alan Coopersmith
34f4464f69 If XGetImage fails to create image, don't dereference it to bounds check
Reported by gcc 7.3:

GetImage.c:110:25: warning: potential null pointer dereference [-Wnull-dereference]
  if (planes < 1 || image->height < 1 || image->bytes_per_line < 1 ||
                    ~~~~~^~~~~~~~

Introduced by 8ea762f94f in Xlib 1.6.4

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
2018-03-07 14:50:32 -08:00
wharms
e835a9dcc3 silence gcc warning assignment discards 'const' qualifier from pointer target type 2017-09-03 14:17:45 +02:00
wharms
36a1ac0253 remove empty line 2017-08-20 21:51:57 +02:00
wharms
e02dfe54f3 add _X_UNUSED to avoid unused variable warnings 2017-08-20 21:50:33 +02:00
walter harms
2911c39cec Fixes: warning: variable 'req' set but not,used
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
2017-08-20 21:47:05 +02:00
walter harms
bf82ec0402 mark _XDefaultIOError as no_return
mark _XDefaultIOError as no_return. No one comes back from exit() ...

Signed-off-by: harms wharms@bfs.de
2017-08-20 21:44:26 +02:00
walter harms
9abe838007 no need to check XFree arguments
You can save a bit of code. The is no need to check XFree arguments bring  free_fontdataOM in line with other free function and check for NULL arg

Signed-off-by: harms wharms@bfs.de
2017-08-20 21:41:41 +02:00
walter harms
433477fcb7 fix memleak in error path
free all mem on error
Signed-off-by: walter harms <wharms@bfs.de>
2017-08-14 18:54:44 +02:00
walter harms
ed9f0d34ab fix memleak in error path
V2: remove unneeded NULL (reported by eric.engestrom@imgtec.com)

fix mem leak in error path
Signed-off-by: walter harms <wharms@bfs.de>
2017-08-14 18:28:18 +02:00
walter harms
7c78fc5769 no need to check args for Xfree()
simplify code

Signed-off-by: walter harms <wharms@bfs.de>
2017-08-14 18:28:18 +02:00
walter harms
c1c14af441 remove stray extern
remove stray extern

Signed-off-by: walter harms <wharms@bfs.de>
2017-08-14 18:28:18 +02:00
walter harms
714921f041 no need to check argument for _XkbFree()
simplify code by removing unneeded checks

Signed-off-by: walter harms <wharms@bfs.de>
2017-08-14 18:12:35 +02:00
walter harms
d02c2466f6 fix more shadow warning
Signed-off-by: walter harms <wharms@bfs.de>
2017-08-14 18:12:35 +02:00
walter harms
0355c3926d fix shadow char_size
Signed-off-by: walter harms <wharms@bfs.de>
2017-08-14 18:02:40 +02:00
walter harms
916dffadf0 remove argument check for free() adjust one inden
Signed-off-by: walter harms <wharms@bfs.de>
2017-08-14 18:02:40 +02:00
walter harms
6ec901ebca _XIOError(dpy); will never return so remore dead
Signed-off-by: walter harms <wharms@bfs.de>
2017-08-14 18:02:39 +02:00
walter harms
83107a677b fix shadow warning
Signed-off-by: walter harms <wharms@bfs.de>
2017-08-14 18:02:39 +02:00
Ryan C. Gordon
4fe66b1c51 Valgrind fix for XStoreColor and XStoreColors.
If the "pad" field isn't set, Valgrind will report it as uninitialized
memory accesses when the struct is copied into the Display's send buffer.

In practice, this is (probably) harmless, but Valgrind is correct in
believing it's a bug.

https://bugs.freedesktop.org/attachment.cgi?id=133189

Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2017-08-06 16:25:25 -07:00
Alan Coopersmith
7d2010fec2 Improve table formatting in XkbChangeControls & XkbKeyNumGroups man pages
Includes fix for Solaris Bug 24564279: "XkbKeyNumGroups.3x11 man page
contains some malformed text" caused by extra whitespace after .TE macros

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2017-04-07 00:13:03 -07:00
Alan Coopersmith
b856d5d929 Clarify state parameter to XkbSetNamedDeviceIndicator
Checking a Bool to see if it's NULL does not work well in C.
Also reported in https://bugs.freedesktop.org/show_bug.cgi?id=251

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
2017-03-24 15:19:27 -07:00
Alan Coopersmith
c6dadd4ceb Make Xkb{Get,Set}NamedIndicator spec & manpages match code
The XKB Library spec and the man pages for XkbGetNamedIndicator &
XkbSetNamedIndicator included a device_spec argument neither function
takes, and do not include the XkbGetNamedDeviceIndicator &
XkbSetNamedDeviceIndicator variants that do take it (along with two
other arguments).

This updates them to match the interfaces the code has provided for
decades.

This has been reported multiple times, so this fixes:
https://bugs.freedesktop.org/show_bug.cgi?id=251
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=729812
Sun Bug 4528016 XkbSetNamedIndicator & XkbGetNamedIndicator man pages are wrong
  (filed: alan.coopersmith@sun.com 2001-11-15 - now aka Oracle bug 15087506)
X.Org Group Defect Id #9418

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
2017-03-24 15:19:18 -07:00
Arthur Huillet
2d20890e7f _XDefaultError: set XlibDisplayIOError flag before calling exit
_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>
2017-03-07 12:39:51 -08:00
Matt Turner
42f4d7af9c libX11 1.6.5
Signed-off-by: Matt Turner <mattst88@gmail.com>
2017-02-25 21:54:22 -08:00
Adam Jackson
a0da5835e8 Revert "Compose sequences for rouble sign"
This reverts commit d9e3406130.

Reported to break 'make check':

https://lists.freedesktop.org/archives/xorg-devel/2017-February/052720.html
2017-02-14 15:33:29 -05:00
Mihail Konev
d9e3406130 Compose sequences for rouble sign
Cyrillic combinations mirror the Qwerty-Jcuken keyboard layout.
Also add Cyrillic sequences for hryvnia sign.

Submitted-by: Victor V. Kustov <coyote@bks.tv>
Reviewed-by: Victor V. Kustov <coyote@bks.tv>
Signed-off-by: Mihail Konev <k.mvc@ya.ru>
2017-02-14 11:39:17 -05:00
Petr Písař
23d9623c66 Revert cs_CZ.UTF-8 XLC_LOCALE to en_US.UTF-8
The cs_CZ.UTF-8/XLC_LOCALE is an empty file leading to unsupported cs_CZ.UTF-8
locale and reporting this error:

Warning: locale not supported by Xlib, locale set to C

Therefore this patch reverts to the en_US.UTF-8 definition file that was used
before. This patch also deduplicates the cs_CZ.UTF-8 entry.

<https://bugs.freedesktop.org/show_bug.cgi?id=98219>

This reverts commit 33840a5465

Signed-off-by: Julien Cristau <jcristau@debian.org>
2017-01-27 23:55:41 +01:00
Mihail Konev
71b0929ebc autogen: add default patch prefix
Signed-off-by: Mihail Konev <k.mvc@ya.ru>
2017-01-26 13:52:49 +10:00
Emil Velikov
2979011bc1 autogen.sh: use quoted string variables
Place quotes around the $srcdir, $ORIGDIR and $0 variables to prevent
fall-outs, when they contain space.

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2017-01-26 11:59:25 +10:00
Peter Hutterer
4a0082a1b6 autogen.sh: use exec instead of waiting for configure to finish
Syncs the invocation of configure with the one from the server.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
2017-01-26 11:59:25 +10:00
Julien Cristau
c74b070f27 Fix wrong Xfree in XListFonts failure path
'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 20a3f99eba "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>
2017-01-09 09:28:52 +10:00
Alan Coopersmith
663f47075f specs/libX11: Update Portability Considerations for the 21st century
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2017-01-03 08:50:52 +10:00