Commit graph

1150 commits

Author SHA1 Message Date
Alan Coopersmith
321392ded1 Remove unused ETEST & ESZTEST macros from XlibInt.c
Left behind when 15e5eaf628 removed support for building without XCB.

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Reviewed-by: Jasper St. Pierre <jstpierre@mecheye.net>
2014-01-05 10:27:54 -08:00
Alan Coopersmith
1ffc0c5503 _XkbReadGeomOverlay: check for NULL first, then use pointer
Flagged by cppcheck 1.62:
[lib/libX11/src/xkb/XKBGeom.c:479] -> [lib/libX11/src/xkb/XKBGeom.c:480]:
 (warning) Possible null pointer dereference: row - otherwise it is
 redundant to check it against null.

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2013-12-26 09:26:13 -08:00
Alan Coopersmith
ddf5f130cc XkbSelectEventDetails: remove unnecessary assignments
clear & selectAll are set to 0 already a few lines earlier,
affectWhich is set to XkbMapNotifyMask a few lines later.
None are used between the other assignments and the removed ones.

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2013-12-26 09:22:49 -08:00
Jon TURNEY
3d69b0a83e Don't try so hard to find a matching font with the given encoding
See http://sourceware.org/bugzilla/show_bug.cgi?id=10948

Currently, if the locale is UTF-8, no CJK fonts are installed, and someone
does XCreateFontSet() with a font name of "*", we end up asking the server
to list the (non-existent) fonts 11 times for each CJK encoding, which can
take a while.

A * wildcard can match multiple components in a XLFD name in XListFonts(),
so there's no need to try adding more than one to get a match.

We do try once with a leading '*-' in case the fontname isn't a full
well-formed XLFD name, maybe even that isn't needed?

(See also http://invisible-island.net/xterm/xterm.faq.html#slow_menus)

Signed-off-by: Jon TURNEY <jon.turney@dronecode.org.uk>
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2013-12-13 22:27:08 -08:00
Alan Coopersmith
7e16330073 unifdef -UISC
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2013-12-02 21:51:27 -08:00
Benno Schulenberg
1e43c262d1 nls: Fix transposed locale identifier for Khmer.
Signed-off-by: Benno Schulenberg <bensberg@justemail.net>
Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2013-11-22 22:46:23 -08:00
Alan Coopersmith
0e45f64766 Drop X_LOCALE fallback for OS'es without setlocale()
C89 or bust!   This was documented as being needed for "only Lynx,
Linux-libc5, OS/2" and has never been enabled in modular builds,
since none of those platforms have had anyone step up to add support
since the X11R7 conversion to autotools.

Mostly performed with unifdef -UX_LOCALE, followed by removal of files
left without any purpose, and manual cleanup of remaining references.

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
2013-11-22 22:02:17 -08:00
Alan Coopersmith
6cb02b1663 Xcms file parsing should not require the impossible to succeed
The field2 helper function, to split lines from Xcms.txt files into
two tab delimited fields, contained a check:

    if ((*pBuf != '\n') || (*pBuf != '\0')) {
        return(XcmsFailure);

which would cause it to return failure unless *pBuf had a value that
was simultaneously equal to both \n & \0, and no one wants to live in
a world where that could ever be true.

This has gone unnoticed since 1991, since this only caused lines
in Xcms.txt that started with whitespace to be rejected, but now
gcc -Wlogicalop has brought it to our attention, and
https://bugs.freedesktop.org/show_bug.cgi?id=70803 was filed.

Now that we see it, and cannot unsee it, we change it to use the
same logic as the check at other points in this function, to return
failure only if we hit \n or \0 before we find the first non-whitespace
character, so that lines starting with whitespace will have the space
skipped over to get to the color name to be defined.

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Reviewed-by: Dan Nicholson <dbn.lists@gmail.com>
2013-10-25 09:27:37 -07:00
Gaetan Nadon
18a5278b00 makekeys: don't need to use target-specific CFLAGS
It's the only thing built in that directory, so we can use AM_CFLAGS
and AM_CPPFLAGS as usual.

Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Signed-off-by: Gaetan Nadon <memsize@videotron.ca>
2013-09-30 13:24:04 -04:00
James Cloos
5dcb40f28d
nls/en_US.UTF-8/Compose.pre: Fix typo.
Fix typo added in 215ce6a678, s/actute/acute/.

Fixes bug #69476.  Reported by Jean Krohn.

Signed-off-by: James Cloos <cloos@jhcloos.com>
2013-09-17 12:50:42 -04:00
Alan Coopersmith
cb107760df libX11 1.6.2 2013-09-08 18:37:12 -07:00
Benno Schulenberg
215ce6a678
nls: Adding more accessible compose sequences for J́ and j́.
Few keyboards have an <acute> key, so this adds the much more
accessible and usual compose sequences with <apostrophe>, ánd
the most comfortable ones with <dead_acute>.

Signed-off-by: Benno Schulenberg <bensberg@justemail.net>
Signed-off-by: James Cloos <cloos@jhcloos.com>
2013-09-01 18:28:50 -04:00
Alan Coopersmith
e9b14d10d0 Bug 68413 - [Bisected]Error in `xterm': realloc(): invalid next size
Pass *new* size to realloc, not old size.

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2013-08-24 17:27:43 -07:00
Alan Coopersmith
c2b8e30790 Stop checking for HAVE_DIX_CONFIG_H on the client side
Leftover from when these XKB files were shared with the server sources
and could be compiled in either the client or server, with the different
autoconf config files in each.

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2013-08-20 12:51:10 -07:00
Alan Coopersmith
84276609b2 Rearrange some variable declarations & initializations in XKB
Little things noticed during XKB restyling that seemed to make the
code easier to read.

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2013-08-20 12:51:10 -07:00
Alan Coopersmith
b90b7e859c Reindent XKB code to X.Org standard style
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2013-08-20 12:51:10 -07:00
Alan Coopersmith
c0a0f78eb4 Fix overflow checks in _XkbReadKeySyms when key_sym_map is already created
We were checking to make sure that the largest keysym value was within
the range of the allocated buffer, but checking against different limits
in the not-yet-allocated vs. the already-allocated branches.

The check should be the same in both, and reflect the size used for the
allocation, which is based on the maximum key code value, so we move it
to be a common check, before we branch, instead of duplicating in each
branch.

map->key_sym_map is an array of XkbSymMapRec structs, [0..max_key_code]
map->syms is the array for which num_syms is recorded, hence is not the
right value to check for ensuring our key_sym_map accesses are in range.

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Reported-by: Barry Kauler <bkauler@gmail.com>
Tested-by: Barry Kauler <bkauler@gmail.com>
2013-08-20 12:51:10 -07:00
Alan Coopersmith
bea6cbd027 Remove long unused src/udcInf.c
I can find no record of what this file was for.  Neither the X11R6.8.2
monolith Imakefile nor any modular release Makefile.am have ever built
it and nothing else references it.

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2013-08-20 12:51:09 -07:00
Alan Coopersmith
bf3501e039 Remove unnecessary casts of pointers to (char *) in calls to Xfree()
Left one cast behind that is necessary to change from const char *
to char * in src/xlibi18n/lcCharSet.c.

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2013-08-20 12:51:09 -07:00
Alan Coopersmith
6ead9dd92a Don't cast sizeof() results to unsigned when passing to Xmalloc/Xcalloc
sizeof() returns size_t, malloc() & calloc() expect sizes in size_t,
don't strip down to unsigned int and re-expand unnecessarily.

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2013-08-20 12:51:09 -07:00
Alan Coopersmith
25a7a329de Remove even more casts of return values from Xmalloc/Xrealloc
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2013-08-20 12:51:09 -07:00
Alan Coopersmith
f8fa16092a xlibi18n: fix argsize argument to _XlcParsePath
The array is defined as having NUM_LOCALEDIR entries, so use that
instead of hardcoded 256 value (the other two calls already did this).

Reported by parfait:
   Buffer overflow (CWE 120): In pointer dereference of argv[argc] with index argc
      Pointer size is 64 elements (of 8 bytes each), index is 255
        at line 82 of src/xlibi18n/lcFile.c in function 'parse_line'.
        called at line 178 in function '_XlcParsePath' with argv = argv.
        called at line 722 in function '_XlcLocaleLibDirName' with argv = args, argsize = 256.
        at line 82 of src/xlibi18n/lcFile.c in function 'parse_line'.
        called at line 178 in function '_XlcParsePath' with argv = argv.
        called at line 638 in function '_XlcLocaleDirName' with argv = args, argsize = 256.

[ This bug was found by the Parfait 1.2.0 bug checking tool.
  http://labs.oracle.com/pls/apex/f?p=labs:49:::::P49_PROJECT_ID:13 ]

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2013-08-20 12:51:09 -07:00
Alan Coopersmith
e7d46c6452 i18n modules: Fix some const cast warnings
imRm.c: In function '_XimSetICMode':
imRm.c:2419:37: warning: cast discards '__attribute__((const))' qualifier from pointer target type [-Wcast-qual]
imRm.c:2420:30: warning: cast discards '__attribute__((const))' qualifier from pointer target type [-Wcast-qual]

lcGenConv.c: In function 'byteM_parse_codeset':
lcGenConv.c:345:13: warning: cast discards '__attribute__((const))' qualifier from pointer target type [-Wcast-qual]

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2013-08-20 12:51:09 -07:00
Alan Coopersmith
cbd86eccf1 xlibi18n: Fix a bunch of const cast warnings
Add const qualifiers to casts where needed, remove other casts that
are no longer needed.

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2013-08-20 12:51:09 -07:00
Alan Coopersmith
eb3676113f Fix const handling in XSetLocaleModifiers
Instead of reusing the input parameter to store the output, make a
result variable instead, so that there's less const confusion.

Fixes gcc warnings:
lcWrap.c: In function 'XSetLocaleModifiers':
lcWrap.c:87:18: warning: cast discards '__attribute__((const))' qualifier from pointer target type [-Wcast-qual]
lcWrap.c:91:25: warning: cast discards '__attribute__((const))' qualifier from pointer target type [-Wcast-qual]
lcWrap.c:93:12: warning: cast discards '__attribute__((const))' qualifier from pointer target type [-Wcast-qual]

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2013-08-20 12:51:08 -07:00
Alan Coopersmith
8ebbffa985 Constify lc_name argument to _XlcLocaleDirName() & _XlcLocaleLibDirName()
Makes code considerably less crufty and clears gcc warnings:
XlcDL.c: In function '_XlcDynamicLoad':
XlcDL.c:384:44: warning: cast discards '__attribute__((const))' qualifier
 from pointer target type [-Wcast-qual]
XlcDL.c:386:51: warning: cast discards '__attribute__((const))' qualifier
 from pointer target type [-Wcast-qual]

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2013-08-20 12:51:08 -07:00
Alan Coopersmith
07e4e86410 init_om: remove unneeded extra copy of string to local buffer
Strings from the supported_charset_list[] were being copied one by
one to a stack buffer, and then strdup called on that buffer.

Instead, just strdup the original string, without the local copy,
and use a more traditional for loop, so it's easier to figure out
what the code is doing (cleaning up a gcc const-cast warning in
the process).

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Reviewed-by: Matthieu Herrb <matthieu.herrb@laas.fr>
2013-08-20 12:51:06 -07:00
Alan Coopersmith
1cec14dad9 Delete unused XKB_INSURE_SIZE macro from XKBlibint.h
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Reviewed-by: Matthieu Herrb <matthieu.herrb@laas.fr>
2013-08-20 12:51:05 -07:00
Alan Coopersmith
5f32182c7c miRegionOp(): ensure region size is not updated if realloc fails
This function performs operations on a region, and when finished,
checks to see if it should compact the rectangle list.  If the
number of rectangles for which memory is allocated in the list is
more than twice the number used, it tries to shrink.   realloc()
should not fail in this case, but if it does, might as well keep
the correct value for the number of allocated rectangles, so we
don't try to grow it unnecessarily later if adding to the region.

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2013-08-20 12:51:04 -07:00
Alan Coopersmith
bd2a0b5a18 miRegionCopy(): handle realloc failure better
Zero out the region size when freeing the region so callers don't think
there's anything there.   (Pointer is already set to NULL from the realloc
result itself.)  Return 0 to the callers, and have them cascade that back
to their callers to indicate failure, instead of their usual return value
of 1 on success.

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2013-08-20 12:51:04 -07:00
Alan Coopersmith
5dc8b5385d Avoid memory leak/corruption if realloc fails in Xregion.h:MEMCHECK macro
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2013-08-20 12:51:04 -07:00
Alan Coopersmith
453c4ee436 Avoid memory leak/corruption if realloc fails in imLcPrs.c:parseline()
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2013-08-20 12:51:04 -07:00
Alan Coopersmith
b3fea74ec5 lcDB.c: ensure buffer size is updated correctly if realloc fails
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2013-08-20 12:51:04 -07:00
Alan Coopersmith
43bb822c71 Avoid memory leak/corruption if realloc fails in XlcDL.c:resolve_object()
Previously, if realloc failed to increase the size, we'd still
record that we had allocated the larger size, but the pointer
to it would be NULL, causing future calls to be broken, and the
previous allocation to be lost/leaked.

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Reviewed-by: Matthieu Herrb <matthieu.herrb@laas.fr>
2013-08-20 12:50:54 -07:00
Alan Coopersmith
5d47a39978 omGeneric.c: convert sprintf calls to snprintf
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Reviewed-by: Matthieu Herrb <matthieu.herrb@laas.fr>
2013-08-20 12:50:47 -07:00
Alan Coopersmith
88a27a2aa9 ximcp/imRm.c: convert sprintf calls to snprintf
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Reviewed-by: Matthieu Herrb <matthieu.herrb@laas.fr>
2013-08-20 12:50:40 -07:00
Alan Coopersmith
4fadae243f xlibi18n: convert sprintf calls to snprintf
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Reviewed-by: Matthieu Herrb <matthieu.herrb@laas.fr>
2013-08-20 12:50:40 -07:00
Alan Coopersmith
36a7edf0e5 lcfile: skip over any null entries in args list
Previous code seemed to assume that printf("%s", NULL) would result
in a 0-length string, not "(null)" or similar, but since there's no
point looking for files in "(null)/filepath...", instead we just
skip over NULL entries in search paths when generating file names.

In the *DirName() functions, this effectively just moves the "bail on
NULL in arg[i]" check up from the later code that assigned it to targetdir
and then bailed if that was NULL.

Not sure how there ever could be a NULL in arg[i], given the current
implementation of XlcParsePath, but it's easy enough to check once and
reject up front instead of on every reference.

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2013-08-20 12:50:40 -07:00
Alan Coopersmith
ee0824f243 Fix file leak on malloc error in XlcDL.c:resolve_object()
File Leak: Leaked File fp
   at line 219 of lib/libX11/src/xlibi18n/XlcDL.c in function 'resolve_object'.
      fp initialized at line 198 with fopen

[ This bug was found by the Parfait 1.2.0 bug checking tool.
  http://labs.oracle.com/pls/apex/f?p=labs:49:::::P49_PROJECT_ID:13 ]

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Reviewed-by: Matthieu Herrb <matthieu.herrb@laas.fr>
2013-08-20 12:50:19 -07:00
Julien Cristau
9b291044a2 Add missing locales to configure.ac
Commits 4076189869 and
f198c6aa98 added two new locales
(sr_CS.UTF-8 and km_KH.UTF-8), but didn't list them in configure.ac,
meaning they're not included in tarballs.

Signed-off-by: Julien Cristau <jcristau@debian.org>
Reviewed-by: James Cloos <cloos@jhcloos.com>
2013-08-11 16:09:07 +02:00
ISHIKAWA,chiaki
8f58e54a5f Fix bogus timestamp generated by XIM
Fix bogus timestamp generted by XIM due to uninitialized
data field. Also set appropriate serial, too.
Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=39367

Signed-off-by: Chiaki ISHIKAWA <ishikawa@yk.rim.or.jp>
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2013-08-07 08:32:19 -07:00
Egbert Eich
e7fd6f0eda XIM: Fix sync problem on focus change.
XSetICFocus() and XUnsetICFocus() are both asynchronous events.
This is a pretty stupid idea: those functions may undo certain
settings on the client side for which requests from the server
may still be in the queue unprocessed. Thus things may be set
in the wrong order ie instead of set -> unest it will be unset -> set.
Moreover there is no way for either the client or the server to
cause the event queue to be flushed - which is pretty bad as
XIM is bidirectional.
The scenario is as follows:
Two ICs are created:
        ic1 = XCreateIC(im,
            XNInputStyle, XIMPreeditCallbacks | XIMStatusCallbacks,
            XNClientWindow, window,
            XNPreeditAttributes, preedit_attr,
            XNStatusAttributes, status_attr,
            NULL);
        ic2 = XCreateIC(im, XNInputStyle,
                       XIMPreeditNothing | XIMStatusNothing,
                       XNClientWindow, window, NULL);
Then the focus is removed from ic2:
        XUnsetICFocus(ic2);
If SCIM is used as the input server it will send a bunch of requests
following an XCreateIC(). One of the requests registers a key release
filter. XUnsetICFocus() unsets both key press and release filters.
Since it is asynchronous, the input server requests to register key
press and release filters may not have been processed, when XUnsetICFocus()
is called. Since there is no explicite way for client programs to enforce
the request queue to be flushed explicitely before an X[Set/Unset]ICFocus()
call it would be safest to make those two calls synchronous in the sense
that they ensure the request queue has been handled before they execute.
The easiest way to do this from Xlib is thru a call to XGetICValues()
which sends a request to the server and subsequently reads the queue
from the server to the client. This will cause all outstanding requests
in the queue to be read and handled.
This is an ugly hack and this could be fixed directly in the client,
however it seems to be easier to fix Xlib than to fix numerous clients.
This problem arose since there is no well documented way how to handle
and synchronize XIM requests and not all input servers send requests
when an IC is created.
This has been discussed extensively in:
 https://bugzilla.novell.com/show_bug.cgi?id=221326

Signed-off-by: Egbert Eich <eich@freedesktop.org>
2013-08-07 16:12:35 +02:00
Egbert Eich
26ec7d3821 XIM: Fix race on focus change: set 'FABRICATED' only when keyev filters in place.
When synthesized key events are sent on commit XIM sets the 'fabricated'
flag so that the keypress handler knows that these were not real events.
This also happens when committing due to the loss of focus. However in this
case the keypress/release filters which consume and unset this flag are no
longer in the filter chain.
So the flag is erronously set when a real keyboard event is received after
focus has been regained. So the first event is wrongly treated as a
fabricated key in the keypress handler which will at the same time reset
the flag so the second key event is treated correctly.
This fix only sets the flag when at least one of the keyboard filters is in
place.
How to reproduce this bug: run scim, choose a Japanese input method start
two instances of xterm: start typing in one xterm (this should pop up an
IM window). Without comitting (hitting 'enter') move focus to the other
xterm, then move focus back. Start typing again. The first character will
be committed immediately without popping up an input window.
With this fix this behavior is gone.

See also: https://bugzilla.novell.com/show_bug.cgi?id=239698

Signed-off-by: Egbert Eich <eich@freedesktop.org>
2013-08-07 16:12:34 +02:00
Alan Coopersmith
44f84223f5 libX11 1.6.1
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2013-07-29 21:29:49 -07:00
Alan Coopersmith
d19cfaca15 Fix undefined XCMSDIR error when building lint library
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2013-07-29 20:11:10 -07:00
Alan Coopersmith
3083cd43d7 Add ku_TR.UTF-8 (Kurdish language, Turkey region) to compose/locale.dir
Upstreaming from changes originally integrated into OpenSolaris
under Sun bug id 6882572.

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Reviewed-by: Thomas Klausner <wiz@NetBSD.org>
2013-07-29 20:10:51 -07:00
Alan Coopersmith
208e586c80 omGeneric: remove space between struct name & member name
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2013-07-27 01:12:45 -07:00
Alan Coopersmith
7db74514e4 Refactor common code from XAddHost & XRemoveHost into single function
On the Xlib side, the only real difference is the mode flag we send
to the server with the address, so just make that an argument to the
function with the common code for packing the address into the request.

(Aside from labels, gcc 4.7.2 generates identical code before & after
 this change due to inlining, verified via diff of gcc -S output.)

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2013-07-23 22:33:52 -07:00
Alan Coopersmith
3292195a64 XSetModifierMapping: Use Data instead of GetReqExtra
Handle arbitrary length data in the same fashion as other calls,
avoiding need to ensure it fits all in the request buffer.

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2013-07-23 22:14:05 -07:00
Kees Cook
feb131b18a libX11: check "req" when calling GetReqExtra
This fixes the two callers of GetReqExtra to check that "req" is non-NULL
to avoid crashing now that GetReqExtra does internal bounds-checking on
the resulting buffer sizes.

Additionally updates comment describing return values to use names
instead of only literal values.

Signed-off-by: Kees Cook <kees@outflux.net>
Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2013-07-22 23:51:48 -07:00