Age | Commit message (Collapse) | Author |
|
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Gaetan Nadon <memsize@videotron.ca>
Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com>
|
|
Xmalloc is a macro evaluating its argument twice.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com>
|
|
sizeof(bla * sizeof()) is'nt right.
Plus add some () to the next_block call too to emphasise that *nclasses is
the multiplicator.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com>
|
|
A few lines south from here we malloc lib->classes, this assignment is a
leftover from 225071e2e67fb65a0258397212f9826c9b25e078.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
|
|
No functional changes, just clarifying the code. If we skip over unknown
classes, lib->num_classes != wire->num_classe. Use a separate variable to
make that change more explicit and align the code closer with
wireToDeviceChangedEvent.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Daniel Stone <daniel@fooishbar.org>
|
|
This addresses a build failure found by the tinderbox.
Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
Reviewed-by: Gaetan Nadon <memsize@videotron.ca>
|
|
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Add the required constants to pretend to support XI 2.1.
Having named constants for 2.1 seems a bit pointless, so let's just use the
numbers directly.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com>
|
|
If the server sends an unknown device class in response to an XIQueryDevice
call, no memory is allocated for these classes but we still write type
and sourceid as well as setting to->classes[i]. The latter causes multiple
classes to point to the same memory field.
Move the common code of assigning these three into the respective class type
handlers so to automatically skip any unknown classes.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Otherwise we run into the old problem again: recompiling libXi against
newer inputproto headers will appear to change the version support,
potentially causing errors or other misbehaviours.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com>
|
|
These defines are currently defined in XI.h and XI2.h. Their only use is as
offset into a library-internal array. Add them to XIint.h to have them where
they belong.
These defines do not have any effect on the protocol. They are simply
offsets into an array for libXi-specific version checking. The defines are
added to this header for readability, given that we cannot remove them from
the protocol without potentially breaking clients (who should never use
these anyway, but...) means they will never get hit.
Future defines for these offsets will only be added to libXi, not the
protocol.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Data32 takes and iterates over an array of longs, thus skipping every 4
bytes on LP64. Here we only have arrays of ints, use the normal Data macro
instead.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com>
|
|
XExtInt.c:161:5: warning: initialization from incompatible pointer type
XSndExEv.c: In function 'XSendExtensionEvent':
XSndExEv.c:84:8: warning: assignment from incompatible pointer type
Xlib and libXi differ in the conversion functions. libXi takes an xEvent**
and a num_events parameter since it may split an event into multiple
xEvents.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
XListDProp.c: In function 'XListDeviceProperties':
XListDProp.c:72:9: warning: pointer targets in passing argument 2 of
'_XRead32' differ in signedness
/usr/include/X11/Xlibint.h:652:13: note: expected 'long int *' but argument
is of type 'Atom *'
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Found by static analyzer.
Reported-by: Jeremy Huddleston <jeremyhu@apple.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com>
|
|
Do the same for negative num_changes.
Found by static analyzer.
Reported-by: Jeremy Huddleston <jeremyhu@apple.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com>
|
|
Necessary space was calculated, but not actually used to allocate memory. As
a result, valuator data would overwrite the allocated memory.
==4166== Invalid write of size 1
==4166== at 0x4C29F04: memcpy (mc_replace_strmem.c:497)
==4166== by 0x8F39180: ??? (in /usr/lib/libXi.so.6.1.0)
==4166== by 0x7433D48: _XCopyEventCookie (in /usr/lib/libX11.so.6.3.0)
==4166== by 0x7425166: XPeekEvent (in /usr/lib/libX11.so.6.3.0)
==4166== by 0x49C3E3: process_key (x11_be.c:1065)
==4166== by 0x49EA5C: event_key_release (x11_be.c:2201)
==4166== by 0x49DD6E: x11_be_process_events (x11_be.c:1892)
==4166== by 0x4A38F4: x11_be_main_loop (x11_be.c:4353)
==4166== by 0x4A39E1: x11_be_thread_main (x11_be.c:4385)
==4166== by 0x87549C9: start_thread (pthread_create.c:300)
==4166== by 0x8A516FC: clone (clone.S:112)
==4166== Address 0x168afe80 is 0 bytes after a block of size 96 alloc'd
==4166== at 0x4C284A8: malloc (vg_replace_malloc.c:236)
==4166== by 0x8F390BD: ??? (in /usr/lib/libXi.so.6.1.0)
==4166== by 0x7433D48: _XCopyEventCookie (in /usr/lib/libX11.so.6.3.0)
==4166== by 0x7425166: XPeekEvent (in /usr/lib/libX11.so.6.3.0)
==4166== by 0x49C3E3: process_key (x11_be.c:1065)
==4166== by 0x49EA5C: event_key_release (x11_be.c:2201)
==4166== by 0x49DD6E: x11_be_process_events (x11_be.c:1892)
==4166== by 0x4A38F4: x11_be_main_loop (x11_be.c:4353)
==4166== by 0x4A39E1: x11_be_thread_main (x11_be.c:4385)
==4166== by 0x87549C9: start_thread (pthread_create.c:300)
Reported-by: Roger Cruz <roger.cruz@virtualcomputer.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com>
Reviewed-by: Daniel Stone <daniel@fooishbar.org>
|
|
Use Data() to send the struct xXIEventMask on the wire instead of
Data32() which expects a pointer to a 64bits value on LP64
architectures.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
The memory layout of an XIButtonClassInfo is
[struct XIButtonClassInfo][mask][labels]
With the mask being currently 4-byte aligned and labels a list of Atoms. On
LP64, Atoms are 8 byte, leading to unaligned access for some mask lengths.
Force the alignment to be sizeof(Atom).
Reported-by: Christian Weisgerber <naddy@mips.inka.de>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Tested-by: Christian Weisgerber <naddy@mips.inka.de>
Reviewed-by: Adam Jackson <ajax@redhat.com>
|
|
Failed modifier data was discarded, causing assertions inside xcb.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
XISetClientPointer is an XI2.0 call and should be named accordingly.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Daniel Stone <daniel@fooishbar.org>
|
|
Each XI2 call should check _XiCheckExtInit for XI version 2.0 or higher.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Daniel Stone <daniel@fooishbar.org>
|
|
Reported-by: Julien Cristau <jcristau@debian.org>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Miscalculation of length caused Data() to memcpy too many bytes.
==2865== Invalid read of size 1
==2865== at 0x4A07480: memcpy (mc_replace_strmem.c:602)
==2865== by 0x544271E: XIGrabDevice (XIGrabDevice.c:69)
==2865== by 0x400B0A: main (gnome642481.c:56)
==2865== Address 0x642f614 is 0 bytes after a block of size 20 alloc'd
==2865== at 0x4A04896: calloc (vg_replace_malloc.c:418)
==2865== by 0x54425D3: XIGrabDevice (XIGrabDevice.c:65)
==2865== by 0x400B0A: main (gnome642481.c:56)
SetReqLen() expects 4-byte units.
Data() expects bytes.
Gnome Bug 642481 <https://bugzilla.gnome.org/show_bug.cgi?id=642481>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
The protocol does not provide a source ID for raw events, so this value is
always 0. It shouldn't really be there, but the past is so hard to change.
Reported-by: Mark Dokter <dokter@icg.tugraz.at>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
the other XIModifierState/XIGroupState fields are being set correctly,
but the "effective" field was being left as undefined memory.
Signed-off-by: Carlos Garnacho <carlosg@gnome.org>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
_XIPassiveGrabDevice, which is called by alle the passive grab functions,
wrongly returns an error when it shouldn't.
The attached patch adds the missing "not" to properly test the error
condition of _XReply.
Signed-off-by: Philipp Reh <sefi@s-e-f-i.de>
Reviewed-by: Daniel Stone <daniel@fooishbar.org>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
All events were getting random uninitialised garbage for display; fix
that.
Signed-off-by: Daniel Stone <daniel@fooishbar.org>
|
|
Signed-off-by: Jesse Adkins <jesserayadkins@gmail.com>
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
|
|
The raw values were being miscalculated, containing only the integral part
of the FP3232, meanwhile normal valuators were mistakenly added the fractional
part of its corresponding raw value.
Signed-off-by: Carlos Garnacho <carlosg@gnome.org>
Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Signed-off-by: Matthieu Herrb <matthieu.herrb@laas.fr>
Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
XISelectEvents and XIGetSelectedEvents were not unlocking display in all
return paths.
Reported-by: Julien Cristau <jcristau@debian.org>
Signed-off-by: Pauli Nieminen <ext-pauli.nieminen@nokia.com>
|
|
This reduces code duplication and fixes possible leak of d. d would leak if
allocation of Device fails.
Signed-off-by: Pauli Nieminen <ext-pauli.nieminen@nokia.com>
Reviewed-by: Julien Cristau <jcristau@debian.org>
|
|
This reduces code duplication and fixes possible leak of f. f would leak if
allocation of Feedback fails.
Signed-off-by: Pauli Nieminen <ext-pauli.nieminen@nokia.com>
Reviewed-by: Julien Cristau <jcristau@debian.org>
|
|
This reduces code duplication and fixes possible leak of data. data would
leak if allocation of state fails.
Signed-off-by: Pauli Nieminen <ext-pauli.nieminen@nokia.com>
Reviewed-by: Julien Cristau <jcristau@debian.org>
|
|
mask_in was leaking for every successfull XIGetSelectedEvents.
Signed-off-by: Pauli Nieminen <ext-pauli.nieminen@nokia.com>
Reviewed-by: Julien Cristau <jcristau@debian.org>
|
|
In error case length of extra data could be uninitialized. This would
result randomly sized request later in function.
Signed-off-by: Pauli Nieminen <ext-pauli.nieminen@nokia.com>
Reviewed-by: Julien Cristau <jcristau@debian.org>
|
|
Signed-off-by: Fernando Carrijo <fcarrijo@yahoo.com.br>
Acked-by: Tiago Vignatti <tiago.vignatti@nokia.com>
Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
|
|
_xiQueryVersion's caller must wrap it in a LockDisplay/UnlockDisplay
pair, so it shouldn't call UnlockDisplay itself.
Signed-off-by: Jamey Sharp <jamey@minilop.net>
|
|
If the server supports a lower XI version than the client, the Xlib-internal
event vector may be smashed. See libXext for more details.
http://cgit.freedesktop.org/xorg/lib/libXext/commit/?id=83fdb27df4ddc2fb088ddf2ec65f0db6b7c57287
This patch queries the server for the supported XI extension before
registering the extension with Xlib. The number of events registered depends
on the server version.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Julien Cristau <jcristau@debian.org>
|
|
Compiler warning flags should be explicitly set in the makefile
rather than being merged with other packages compiler flags.
Signed-off-by: Gaetan Nadon <memsize@videotron.ca>
|
|
Signed-off-by: Julien Cristau <jcristau@debian.org>
|
|
The length is suppposed to be the complete class size, not just the struct
size. Since XValuatorState is followed by multiple valuator values the
size of the class is variable and dependent on the number of valuators.
The server assembles the valuator state last. This bug is unlikely to affect
clients as they should never go past the last class anyway.
Tested-by: Thomas Jaeger
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
X.Org Bug 23708 <http://bugs.freedesktop.org/show_bug.cgi?id=23708>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
X.Org Bug 23609 <http://bugs.freedesktop.org/show_bug.cgi?id=23609>
|
|
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
XI2 adds a whole lot of new symbols but leaves the existing ones. Minor bump
only.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Keysym grabs are tricky to get right for applications that are more
complicated than demo applications. otoh, we know keycode grabs are
working.
So let's go with keycode grabs for now and add keysym grabs later
when we've sorted out the details.
Requires inputproto 1.9.99.15
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|