ChangeLog | 179 +++++++++++++++++++++++++++++++++++++++ configure.ac | 36 +++---- debian/changelog | 8 + include/X11/extensions/XInput2.h | 2 man/XIGrabButton.txt | 6 + man/XIGrabEnter.txt | 6 + man/XIQueryPointer.txt | 3 src/Makefile.am | 2 src/XExtInt.c | 19 +++- src/XIAllowEvents.c | 2 src/XIDefineCursor.c | 2 src/XIGetDevFocus.c | 2 src/XIGrabDevice.c | 10 +- src/XIHierarchy.c | 2 src/XIPassiveGrab.c | 6 - src/XIProperties.c | 8 - src/XIQueryDevice.c | 2 src/XIQueryPointer.c | 2 src/XISelEv.c | 4 src/XISetCPtr.c | 62 +++++++++++++ src/XISetDevFocus.c | 2 src/XIWarpPointer.c | 2 src/XSetCPtr.c | 62 ------------- 23 files changed, 319 insertions(+), 110 deletions(-)
New commits: commit bb73aa8d8e6c0dc8e5c2411b627e9c2df978dafe Author: Cyril Brulebois <k...@debian.org> Date: Sun Mar 27 06:36:47 2011 +0200 Upload to unstable. diff --git a/debian/changelog b/debian/changelog index ef210b1..cfb9e80 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -libxi (2:1.4.2-1) UNRELEASED; urgency=low +libxi (2:1.4.2-1) unstable; urgency=low [ Julien Cristau ] * Bump Standards-Version to 3.9.1 (no changes). @@ -6,7 +6,7 @@ libxi (2:1.4.2-1) UNRELEASED; urgency=low [ Cyril Brulebois ] * New upstream release. - -- Cyril Brulebois <k...@debian.org> Sun, 27 Mar 2011 06:35:40 +0200 + -- Cyril Brulebois <k...@debian.org> Sun, 27 Mar 2011 06:36:41 +0200 libxi (2:1.4.1-1) unstable; urgency=low commit 28d6e234f03b955d34f0b5f2b95e24d07388299b Author: Cyril Brulebois <k...@debian.org> Date: Sun Mar 27 06:35:50 2011 +0200 Bump changelogs. diff --git a/ChangeLog b/ChangeLog index a3372e0..3fbb8d8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,182 @@ +commit 32236a7779f721d252d633d06ade306f246421a3 +Author: Jeremy Huddleston <jerem...@apple.com> +Date: Fri Mar 18 16:30:13 2011 -0700 + + configure.ac: 1.4.2 + + Signed-off-by: Jeremy Huddleston <jerem...@apple.com> + +commit 2d638fc37b0dbf28e5c826f74f68ada83a8c3e2b +Author: Peter Hutterer <peter.hutte...@who-t.net> +Date: Tue Mar 15 10:55:10 2011 +1000 + + Force alignment with sizeof(Atom) for XIButtonClassInfo + + 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 <na...@mips.inka.de> + Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> + Tested-by: Christian Weisgerber <na...@mips.inka.de> + Reviewed-by: Adam Jackson <a...@redhat.com> + +commit 477f922fb07eea629f16c55b0a022e836ede6d41 +Author: Peter Hutterer <peter.hutte...@who-t.net> +Date: Tue Mar 8 14:44:10 2011 +1000 + + Don't discard extra data for passive grabs. + + Failed modifier data was discarded, causing assertions inside xcb. + + Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> + +commit f0a352412920d9989323c7d33ca75c3646ee3f35 +Author: Peter Hutterer <peter.hutte...@who-t.net> +Date: Tue Mar 8 14:01:35 2011 +1000 + + man: describe return value for XI2 passive grabbing calls. + + Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> + +commit 11b1e8ea7bc160cf9a42231742eedb0e7fefa222 +Author: Peter Hutterer <peter.hutte...@who-t.net> +Date: Thu Sep 9 14:43:03 2010 +1000 + + Rename XSetCPtr.c to XISetCPtr.c. + + XISetClientPointer is an XI2.0 call and should be named accordingly. + + Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> + Reviewed-by: Daniel Stone <dan...@fooishbar.org> + +commit 19ac7ef23e7ff07068a63d1553159e7cb3ad2576 +Author: Peter Hutterer <peter.hutte...@who-t.net> +Date: Thu Sep 9 14:43:02 2010 +1000 + + Require XI 2 for all XI 2 calls. + + Each XI2 call should check _XiCheckExtInit for XI version 2.0 or higher. + + Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> + Reviewed-by: Daniel Stone <dan...@fooishbar.org> + +commit 536bd44c513ede7e61e112c82a80fb9197f261f7 +Author: Peter Hutterer <peter.hutte...@who-t.net> +Date: Wed Feb 23 10:53:21 2011 +1000 + + Fix typo in comment. + + Reported-by: Julien Cristau <jcris...@debian.org> + Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> + +commit 4ca8be9f3ffbafe9515e50d784f4ff83f6993be0 +Author: Peter Hutterer <peter.hutte...@who-t.net> +Date: Wed Feb 23 09:30:59 2011 +1000 + + Fix invalid read in XIGrabDevice. + + 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.hutte...@who-t.net> + +commit 4db3db2b38d8eb9024170633d3bf7c5050272dd0 +Author: Peter Hutterer <peter.hutte...@who-t.net> +Date: Mon Feb 14 08:48:07 2011 +1000 + + Mark sourceid in Raw events as bug and force to 0.. + + 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 <dok...@icg.tugraz.at> + Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> + +commit d79a9b174a79e89ca2507a61f2e12af25102313f +Author: Peter Hutterer <peter.hutte...@who-t.net> +Date: Tue Feb 1 07:36:08 2011 +1000 + + man: note that callers of XIQueryPointer must free the button mask. + + buttons_return->mask is allocated by the library and must be freed by the + caller to avoid leaking. + + Reported-by: Matthias Clasen <mcla...@redhat.com> + Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> + +commit 1b376f371c2f866cd1cdf047e50210a5c69772b9 +Author: Gaetan Nadon <mems...@videotron.ca> +Date: Wed Feb 2 11:43:43 2011 -0500 + + config: comment, minor upgrade, quote and layout configure.ac + + Group statements per section as per Autoconf standard layout + Quote statements where appropriate. + Autoconf recommends not using dnl instead of # for comments + + Use AC_CONFIG_FILES to replace the deprecated AC_OUTPUT with parameters. + Use AC_PROG_LIBTOOL to replace the deprecated AM_PROG_LIBTOOL + Remove redundant AC_SUBST(*_CFLAGS) and/or *_LIBS + Remove redundant AC_PROG_MAKE_SET included with AM_INIT_AUTOMAKE + Remove redundant AC_CANONICAL_HOST included in XORG_DEFAULT_OPTIONS + Add AC_CONFIG_SRCDIR([Makefile.am]) where missing + Update minimum version of util-macros to at least 1.8. + + One or more of the above actions were applied + No functional configuration changes + + This helps automated maintenance and release activities. + Details can be found in http://wiki.x.org/wiki/NewModuleGuidelines + + Signed-off-by: Gaetan Nadon <mems...@videotron.ca> + +commit faff510fed9733b2860e14490d5a40d70b840eae +Author: Gaetan Nadon <mems...@videotron.ca> +Date: Fri Jan 28 19:41:37 2011 -0500 + + config: replace deprecated AM_CONFIG_HEADER with AC_CONFIG_HEADERS + + Signed-off-by: Gaetan Nadon <mems...@videotron.ca> + +commit 3776075264024af7eca93f689305d46302e88536 +Author: Gaetan Nadon <mems...@videotron.ca> +Date: Fri Jan 28 12:07:46 2011 -0500 + + config: remove already included AC_PROG_SED statement + + Use AC_PROG_SED now supplied by XORG_DEFAULT_OPTIONS + Use the appropriate platform version of sed + + Signed-off-by: Gaetan Nadon <mems...@videotron.ca> + +commit 5283e87ca909304d3e1820ef877bf3587a9c8724 +Author: Gaetan Nadon <mems...@videotron.ca> +Date: Thu Jan 27 18:50:15 2011 -0500 + + config: remove AC_PROG_CC as it overrides AC_PROG_C_C99 + + XORG_STRICT_OPTION from XORG_DEFAULT_OPTIONS calls + AC_PROG_C_C99. This sets gcc with -std=gnu99. + If AC_PROG_CC macro is called afterwards, it resets CC to gcc. + + Signed-off-by: Gaetan Nadon <mems...@videotron.ca> + commit be2a1b33c9394dcab52622bde53c83f1dd840ea0 Author: Peter Hutterer <peter.hutte...@who-t.net> Date: Wed Jan 26 07:42:53 2011 +1000 diff --git a/debian/changelog b/debian/changelog index f9e9577..ef210b1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,12 @@ -libxi (2:1.4.1-2) UNRELEASED; urgency=low +libxi (2:1.4.2-1) UNRELEASED; urgency=low + [ Julien Cristau ] * Bump Standards-Version to 3.9.1 (no changes). - -- Julien Cristau <jcris...@debian.org> Tue, 08 Feb 2011 00:41:50 +0100 + [ Cyril Brulebois ] + * New upstream release. + + -- Cyril Brulebois <k...@debian.org> Sun, 27 Mar 2011 06:35:40 +0200 libxi (2:1.4.1-1) unstable; urgency=low commit 32236a7779f721d252d633d06ade306f246421a3 Author: Jeremy Huddleston <jerem...@apple.com> Date: Fri Mar 18 16:30:13 2011 -0700 configure.ac: 1.4.2 Signed-off-by: Jeremy Huddleston <jerem...@apple.com> diff --git a/configure.ac b/configure.ac index 405cd34..08501c9 100644 --- a/configure.ac +++ b/configure.ac @@ -1,7 +1,7 @@ # Initialize Autoconf AC_PREREQ([2.60]) -AC_INIT([libXi], [1.4.1], +AC_INIT([libXi], [1.4.2], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [libXi]) AC_CONFIG_SRCDIR([Makefile.am]) AC_CONFIG_HEADERS([src/config.h]) commit 2d638fc37b0dbf28e5c826f74f68ada83a8c3e2b Author: Peter Hutterer <peter.hutte...@who-t.net> Date: Tue Mar 15 10:55:10 2011 +1000 Force alignment with sizeof(Atom) for XIButtonClassInfo 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 <na...@mips.inka.de> Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> Tested-by: Christian Weisgerber <na...@mips.inka.de> Reviewed-by: Adam Jackson <a...@redhat.com> diff --git a/src/XExtInt.c b/src/XExtInt.c index 5a1bca6..d1451cc 100644 --- a/src/XExtInt.c +++ b/src/XExtInt.c @@ -1028,7 +1028,9 @@ sizeDeviceClassType(int type, int num_elements) case XIButtonClass: l = sizeof(XIButtonClassInfo); l += num_elements * sizeof(Atom); - l += ((((num_elements + 7)/8) + 3)/4) * 4; + /* Force mask alignment with longs to avoid + * unaligned access when accessing the atoms. */ + l += ((((num_elements + 7)/8) + 3)/4) * sizeof(Atom); break; case XIKeyClass: l = sizeof(XIKeyClassInfo); @@ -1121,12 +1123,16 @@ copyDeviceChangedEvent(XGenericEventCookie *in_cookie, { case XIButtonClass: { + int size; XIButtonClassInfo *bin, *bout; bin = (XIButtonClassInfo*)any; bout = next_block(&ptr, sizeof(XIButtonClass)); *bout = *bin; - bout->state.mask = next_block(&ptr, bout->state.mask_len); + /* Force mask alignment with longs to avoid unaligned + * access when accessing the atoms. */ + size = bout->state.mask_len/4 * sizeof(Atom); + bout->state.mask = next_block(&ptr, size); memcpy(bout->state.mask, bin->state.mask, bout->state.mask_len); @@ -1474,14 +1480,18 @@ copy_classes(XIDeviceInfo* to, xXIAnyInfo* from, int nclasses) XIButtonClassInfo *cls_lib; xXIButtonInfo *cls_wire; uint32_t *atoms; + int size; int j; cls_lib = next_block(&ptr_lib, sizeof(XIButtonClassInfo)); cls_wire = (xXIButtonInfo*)any_wire; cls_lib->num_buttons = cls_wire->num_buttons; - cls_lib->state.mask_len = ((((cls_wire->num_buttons + 7)/8) + 3)/4) * 4; - cls_lib->state.mask = next_block(&ptr_lib, cls_lib->state.mask_len); + size = ((((cls_wire->num_buttons + 7)/8) + 3)/4); + cls_lib->state.mask_len = size * 4; + /* Force mask alignment with longs to avoid unaligned + * access when accessing the atoms. */ + cls_lib->state.mask = next_block(&ptr_lib, size * sizeof(Atom)); memcpy(cls_lib->state.mask, &cls_wire[1], cls_lib->state.mask_len); commit 477f922fb07eea629f16c55b0a022e836ede6d41 Author: Peter Hutterer <peter.hutte...@who-t.net> Date: Tue Mar 8 14:44:10 2011 +1000 Don't discard extra data for passive grabs. Failed modifier data was discarded, causing assertions inside xcb. Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> diff --git a/src/XIPassiveGrab.c b/src/XIPassiveGrab.c index ada658f..feef74b 100644 --- a/src/XIPassiveGrab.c +++ b/src/XIPassiveGrab.c @@ -73,7 +73,7 @@ _XIPassiveGrabDevice(Display* dpy, int deviceid, int grabtype, int detail, free(buff); - if (!_XReply(dpy, (xReply *)&reply, 0, xTrue)) + if (!_XReply(dpy, (xReply *)&reply, 0, xFalse)) { UnlockDisplay(dpy); SyncHandle(); commit f0a352412920d9989323c7d33ca75c3646ee3f35 Author: Peter Hutterer <peter.hutte...@who-t.net> Date: Tue Mar 8 14:01:35 2011 +1000 man: describe return value for XI2 passive grabbing calls. Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> diff --git a/man/XIGrabButton.txt b/man/XIGrabButton.txt index 70a3505..fb806af 100644 --- a/man/XIGrabButton.txt +++ b/man/XIGrabButton.txt @@ -156,6 +156,12 @@ DESCRIPTION combination. XIGrabButton and XIGrabKeycode have no effect on an active grab. + On success, XIGrabButton and XIGrabKeycode return 0; + If one or more modifier combinations could not be grabbed, + XIGrabButton and XIGrabKeycode return the number of failed + combinations and modifiers_inout contains the failed combinations + and their respective status codes. + XIGrabButton and XIGrabKeycode can generate BadClass, BadDevice, BadMatch, BadValue, and BadWindow errors. diff --git a/man/XIGrabEnter.txt b/man/XIGrabEnter.txt index 005a72b..fff3773 100644 --- a/man/XIGrabEnter.txt +++ b/man/XIGrabEnter.txt @@ -133,6 +133,12 @@ DESCRIPTION is a conflicting grab for any combination. XIGrabEnter and XIGrabFocusin have no effect on an active grab. + On success, XIGrabEnter and XIGrabFocusIn return 0; + If one or more modifier combinations could not be grabbed, + XIGrabEnter and XIGrabFocusIn return the number of failed + combinations and modifiers_inout contains the failed combinations + and their respective status codes. + XIGrabEnter and XIGrabFocusIn can generate BadDevice, BadMatch, BadValue, and BadWindow errors. commit 11b1e8ea7bc160cf9a42231742eedb0e7fefa222 Author: Peter Hutterer <peter.hutte...@who-t.net> Date: Thu Sep 9 14:43:03 2010 +1000 Rename XSetCPtr.c to XISetCPtr.c. XISetClientPointer is an XI2.0 call and should be named accordingly. Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> Reviewed-by: Daniel Stone <dan...@fooishbar.org> diff --git a/src/Makefile.am b/src/Makefile.am index 76b10e2..c036ae7 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -9,6 +9,7 @@ XI2_sources = XIAllowEvents.c \ XIPassiveGrab.c \ XIProperties.c \ XISelEv.c \ + XISetCPtr.c \ XIWarpPointer.c \ XIHierarchy.c \ XIDefineCursor.c \ @@ -48,7 +49,6 @@ libXi_la_SOURCES = \ XQueryDv.c \ XSelect.c \ XSetBMap.c \ - XSetCPtr.c \ XSetDVal.c \ XSetMMap.c \ XSetMode.c \ diff --git a/src/XISetCPtr.c b/src/XISetCPtr.c new file mode 100644 index 0000000..4948598 --- /dev/null +++ b/src/XISetCPtr.c @@ -0,0 +1,62 @@ +/************************************************************ + +Copyright 2007 Peter Hutterer <pe...@cs.unisa.edu.au> + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + +*/ + +/*********************************************************************** + * + * XISetClientPointer - Sets the default pointer for a client. This call is + * important for legacy applications that may send ambiguous requests to the + * server where the server has to randomly pick a device. + * Ideally, the window manager will always send a SetClientPointer request + * before the client interacts with an application. + */ + +#include <stdint.h> +#include <X11/extensions/XI2proto.h> +#include <X11/Xlibint.h> +#include <X11/extensions/XInput2.h> +#include <X11/extensions/extutil.h> +#include "XIint.h" + +Status +XISetClientPointer(Display* dpy, Window win, int deviceid) +{ + xXISetClientPointerReq* req; + XExtDisplayInfo *info = XInput_find_display(dpy); + + LockDisplay(dpy); + if (_XiCheckExtInit(dpy, XInput_2_0, info) == -1) + return (NoSuchExtension); + + GetReq(XISetClientPointer, req); + req->reqType = info->codes->major_opcode; + req->ReqType = X_XISetClientPointer; + req->win = win; + req->deviceid = deviceid; + + UnlockDisplay(dpy); + SyncHandle(); + return Success; +} diff --git a/src/XSetCPtr.c b/src/XSetCPtr.c deleted file mode 100644 index 36efc30..0000000 --- a/src/XSetCPtr.c +++ /dev/null @@ -1,62 +0,0 @@ -/************************************************************ - -Copyright 2007 Peter Hutterer <pe...@cs.unisa.edu.au> - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - -*/ - -/*********************************************************************** - * - * XISetClientPointer - Sets the default pointer for a client. This call is - * important for legacy applications that may send ambiguous requests to the - * server where the server has to randomly pick a device. - * Ideally, the window manager will always send a SetClientPointer request - * before the client interacts with an application. - */ - -#include <stdint.h> -#include <X11/extensions/XI2proto.h> -#include <X11/Xlibint.h> -#include <X11/extensions/XInput2.h> -#include <X11/extensions/extutil.h> -#include "XIint.h" - -Status -XISetClientPointer(Display* dpy, Window win, int deviceid) -{ - xXISetClientPointerReq* req; - XExtDisplayInfo *info = XInput_find_display(dpy); - - LockDisplay(dpy); - if (_XiCheckExtInit(dpy, XInput_2_0, info) == -1) - return (NoSuchExtension); - - GetReq(XISetClientPointer, req); - req->reqType = info->codes->major_opcode; - req->ReqType = X_XISetClientPointer; - req->win = win; - req->deviceid = deviceid; - - UnlockDisplay(dpy); - SyncHandle(); - return Success; -} commit 19ac7ef23e7ff07068a63d1553159e7cb3ad2576 Author: Peter Hutterer <peter.hutte...@who-t.net> Date: Thu Sep 9 14:43:02 2010 +1000 Require XI 2 for all XI 2 calls. Each XI2 call should check _XiCheckExtInit for XI version 2.0 or higher. Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> Reviewed-by: Daniel Stone <dan...@fooishbar.org> diff --git a/src/XIAllowEvents.c b/src/XIAllowEvents.c index 75980a0..1d388b3 100644 --- a/src/XIAllowEvents.c +++ b/src/XIAllowEvents.c @@ -37,7 +37,7 @@ XIAllowEvents(Display *dpy, int deviceid, int event_mode, Time time) XExtDisplayInfo *extinfo = XInput_find_display(dpy); LockDisplay(dpy); - if (_XiCheckExtInit(dpy, Dont_Check, extinfo) == -1) + if (_XiCheckExtInit(dpy, XInput_2_0, extinfo) == -1) return (NoSuchExtension); GetReq(XIAllowEvents, req); diff --git a/src/XIDefineCursor.c b/src/XIDefineCursor.c index 5ad1534..be6dadb 100644 --- a/src/XIDefineCursor.c +++ b/src/XIDefineCursor.c @@ -44,7 +44,7 @@ int XIDefineCursor(Display *dpy, int deviceid, Window w, Cursor cursor) XExtDisplayInfo *info = XInput_find_display(dpy); LockDisplay(dpy); - if (_XiCheckExtInit(dpy, Dont_Check, info) == -1) + if (_XiCheckExtInit(dpy, XInput_2_0, info) == -1) return (NoSuchExtension); GetReq(XIChangeCursor, req); diff --git a/src/XIGetDevFocus.c b/src/XIGetDevFocus.c index 1d2a9bf..524bf39 100644 --- a/src/XIGetDevFocus.c +++ b/src/XIGetDevFocus.c @@ -38,7 +38,7 @@ XIGetFocus(Display *dpy, int deviceid, Window *focus_return) XExtDisplayInfo *extinfo = XInput_find_display(dpy); LockDisplay(dpy); - if (_XiCheckExtInit(dpy, Dont_Check, extinfo) == -1) + if (_XiCheckExtInit(dpy, XInput_2_0, extinfo) == -1) return (NoSuchExtension); GetReq(XIGetFocus, req); diff --git a/src/XIGrabDevice.c b/src/XIGrabDevice.c index e0ca601..94feaee 100644 --- a/src/XIGrabDevice.c +++ b/src/XIGrabDevice.c @@ -43,7 +43,7 @@ XIGrabDevice(Display* dpy, int deviceid, Window grab_window, Time time, XExtDisplayInfo *extinfo = XInput_find_display(dpy); LockDisplay(dpy); - if (_XiCheckExtInit(dpy, Dont_Check, extinfo) == -1) + if (_XiCheckExtInit(dpy, XInput_2_0, extinfo) == -1) return (NoSuchExtension); GetReq(XIGrabDevice, req); @@ -86,7 +86,7 @@ XIUngrabDevice(Display* dpy, int deviceid, Time time) XExtDisplayInfo *info = XInput_find_display(dpy); LockDisplay(dpy); - if (_XiCheckExtInit(dpy, Dont_Check, info) == -1) + if (_XiCheckExtInit(dpy, XInput_2_0, info) == -1) return (NoSuchExtension); GetReq(XIUngrabDevice, req); diff --git a/src/XIHierarchy.c b/src/XIHierarchy.c index 9b267bf..d30ea29 100644 --- a/src/XIHierarchy.c +++ b/src/XIHierarchy.c @@ -49,7 +49,7 @@ XIChangeHierarchy(Display* dpy, int dlen = 0, i; LockDisplay(dpy); - if (_XiCheckExtInit(dpy, Dont_Check, info) == -1) + if (_XiCheckExtInit(dpy, XInput_2_0, info) == -1) return (NoSuchExtension); GetReq(XIChangeHierarchy, req); diff --git a/src/XIPassiveGrab.c b/src/XIPassiveGrab.c index 98eb806..ada658f 100644 --- a/src/XIPassiveGrab.c +++ b/src/XIPassiveGrab.c @@ -45,7 +45,7 @@ _XIPassiveGrabDevice(Display* dpy, int deviceid, int grabtype, int detail, XExtDisplayInfo *extinfo = XInput_find_display(dpy); LockDisplay(dpy); - if (_XiCheckExtInit(dpy, Dont_Check, extinfo) == -1) + if (_XiCheckExtInit(dpy, XInput_2_0, extinfo) == -1) return -1; GetReq(XIPassiveGrabDevice, req); @@ -155,7 +155,7 @@ _XIPassiveUngrabDevice(Display* dpy, int deviceid, int grabtype, int detail, XExtDisplayInfo *extinfo = XInput_find_display(dpy); LockDisplay(dpy); - if (_XiCheckExtInit(dpy, Dont_Check, extinfo) == -1) + if (_XiCheckExtInit(dpy, XInput_2_0, extinfo) == -1) return -1; GetReq(XIPassiveUngrabDevice, req); diff --git a/src/XIProperties.c b/src/XIProperties.c index 0f77e58..83a7a68 100644 --- a/src/XIProperties.c +++ b/src/XIProperties.c @@ -49,7 +49,7 @@ XIListProperties(Display* dpy, int deviceid, int *num_props_return) LockDisplay(dpy); *num_props_return = 0; - if (_XiCheckExtInit(dpy, Dont_Check, info) == -1) + if (_XiCheckExtInit(dpy, XInput_2_0, info) == -1) goto cleanup; GetReq(XIListProperties, req); @@ -88,7 +88,7 @@ XIDeleteProperty(Display* dpy, int deviceid, Atom property) XExtDisplayInfo *info = XInput_find_display(dpy); LockDisplay(dpy); - if (_XiCheckExtInit(dpy, Dont_Check, info) == -1) + if (_XiCheckExtInit(dpy, XInput_2_0, info) == -1) return; GetReq(XIDeleteProperty, req); @@ -111,7 +111,7 @@ XIChangeProperty(Display* dpy, int deviceid, Atom property, Atom type, XExtDisplayInfo *info = XInput_find_display(dpy); LockDisplay(dpy); - if (_XiCheckExtInit(dpy, Dont_Check, info) == -1) + if (_XiCheckExtInit(dpy, XInput_2_0, info) == -1) return; GetReq(XIChangeProperty, req); @@ -175,7 +175,7 @@ XIGetProperty(Display* dpy, int deviceid, Atom property, long offset, XExtDisplayInfo *info = XInput_find_display(dpy); LockDisplay(dpy); - if (_XiCheckExtInit(dpy, Dont_Check, info) == -1) + if (_XiCheckExtInit(dpy, XInput_2_0, info) == -1) return 1; GetReq(XIGetProperty, req); diff --git a/src/XIQueryDevice.c b/src/XIQueryDevice.c index 34c38cb..4e2f392 100644 --- a/src/XIQueryDevice.c +++ b/src/XIQueryDevice.c @@ -45,7 +45,7 @@ XIQueryDevice(Display *dpy, int deviceid, int *ndevices_return) XExtDisplayInfo *extinfo = XInput_find_display(dpy); LockDisplay(dpy); - if (_XiCheckExtInit(dpy, Dont_Check, extinfo) == -1) + if (_XiCheckExtInit(dpy, XInput_2_0, extinfo) == -1) goto error; GetReq(XIQueryDevice, req); diff --git a/src/XIQueryPointer.c b/src/XIQueryPointer.c index e068a97..1a02a5a 100644 --- a/src/XIQueryPointer.c +++ b/src/XIQueryPointer.c @@ -59,7 +59,7 @@ XIQueryPointer(Display *dpy, XExtDisplayInfo *info = XInput_find_display(dpy); LockDisplay(dpy); - if (_XiCheckExtInit(dpy, Dont_Check, info) == -1) + if (_XiCheckExtInit(dpy, XInput_2_0, info) == -1) return False; GetReq(XIQueryPointer, req); diff --git a/src/XISelEv.c b/src/XISelEv.c index f1f3fa4..a9c997a 100644 --- a/src/XISelEv.c +++ b/src/XISelEv.c @@ -52,7 +52,7 @@ XISelectEvents(Display* dpy, Window win, XIEventMask* masks, int num_masks) XExtDisplayInfo *info = XInput_find_display(dpy); LockDisplay(dpy); - if (_XiCheckExtInit(dpy, Dont_Check, info) == -1) { + if (_XiCheckExtInit(dpy, XInput_2_0, info) == -1) { r = NoSuchExtension; goto out; } @@ -108,7 +108,7 @@ XIGetSelectedEvents(Display* dpy, Window win, int *num_masks_return) *num_masks_return = -1; LockDisplay(dpy); - if (_XiCheckExtInit(dpy, Dont_Check, info) == -1) + if (_XiCheckExtInit(dpy, XInput_2_0, info) == -1) goto out; GetReq(XIGetSelectedEvents, req); diff --git a/src/XISetDevFocus.c b/src/XISetDevFocus.c index e1567bd..7090c8f 100644 --- a/src/XISetDevFocus.c +++ b/src/XISetDevFocus.c @@ -37,7 +37,7 @@ XISetFocus(Display *dpy, int deviceid, Window focus, Time time) XExtDisplayInfo *extinfo = XInput_find_display(dpy); LockDisplay(dpy); - if (_XiCheckExtInit(dpy, Dont_Check, extinfo) == -1) + if (_XiCheckExtInit(dpy, XInput_2_0, extinfo) == -1) return (NoSuchExtension); GetReq(XISetFocus, req); diff --git a/src/XIWarpPointer.c b/src/XIWarpPointer.c index 038a0d3..b150915 100644 --- a/src/XIWarpPointer.c +++ b/src/XIWarpPointer.c @@ -54,7 +54,7 @@ XIWarpPointer(Display *dpy, XExtDisplayInfo *info = XInput_find_display(dpy); LockDisplay(dpy); - if (_XiCheckExtInit(dpy, Dont_Check, info) == -1) + if (_XiCheckExtInit(dpy, XInput_2_0, info) == -1) return (NoSuchExtension); GetReq(XIWarpPointer, req); diff --git a/src/XSetCPtr.c b/src/XSetCPtr.c index 1176c5d..36efc30 100644 --- a/src/XSetCPtr.c +++ b/src/XSetCPtr.c @@ -47,7 +47,7 @@ XISetClientPointer(Display* dpy, Window win, int deviceid) XExtDisplayInfo *info = XInput_find_display(dpy); LockDisplay(dpy); - if (_XiCheckExtInit(dpy, Dont_Check, info) == -1) + if (_XiCheckExtInit(dpy, XInput_2_0, info) == -1) return (NoSuchExtension); GetReq(XISetClientPointer, req); commit 536bd44c513ede7e61e112c82a80fb9197f261f7 Author: Peter Hutterer <peter.hutte...@who-t.net> Date: Wed Feb 23 10:53:21 2011 +1000 Fix typo in comment. Reported-by: Julien Cristau <jcris...@debian.org> Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> diff --git a/src/XIGrabDevice.c b/src/XIGrabDevice.c index 97ab971..e0ca601 100644 --- a/src/XIGrabDevice.c +++ b/src/XIGrabDevice.c @@ -59,7 +59,7 @@ XIGrabDevice(Display* dpy, int deviceid, Window grab_window, Time time, req->cursor = cursor; - /* masks.mask_len is in bytes, but we need 4-byte units on the wire, + /* mask->mask_len is in bytes, but we need 4-byte units on the wire, * and they need to be padded with 0 */ len = req->mask_len; buff = calloc(1, len * 4); commit 4ca8be9f3ffbafe9515e50d784f4ff83f6993be0 Author: Peter Hutterer <peter.hutte...@who-t.net> Date: Wed Feb 23 09:30:59 2011 +1000 Fix invalid read in XIGrabDevice. 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.hutte...@who-t.net> diff --git a/src/XIGrabDevice.c b/src/XIGrabDevice.c index 985d3f1..97ab971 100644 --- a/src/XIGrabDevice.c +++ b/src/XIGrabDevice.c @@ -61,8 +61,8 @@ XIGrabDevice(Display* dpy, int deviceid, Window grab_window, Time time, /* masks.mask_len is in bytes, but we need 4-byte units on the wire, * and they need to be padded with 0 */ - len = req->mask_len * 4; - buff = calloc(1, len); + len = req->mask_len; + buff = calloc(1, len * 4); memcpy(buff, mask->mask, mask->mask_len); SetReqLen(req, len, len); commit 4db3db2b38d8eb9024170633d3bf7c5050272dd0 Author: Peter Hutterer <peter.hutte...@who-t.net> Date: Mon Feb 14 08:48:07 2011 +1000 Mark sourceid in Raw events as bug and force to 0.. 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 <dok...@icg.tugraz.at> Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> diff --git a/include/X11/extensions/XInput2.h b/include/X11/extensions/XInput2.h index e6c7b30..3fcf083 100644 --- a/include/X11/extensions/XInput2.h +++ b/include/X11/extensions/XInput2.h @@ -242,7 +242,7 @@ typedef struct { int evtype; /* XI_RawKeyPress, XI_RawKeyRelease, etc. */ Time time; int deviceid; - int sourceid; + int sourceid; /* Bug: Always 0. https://bugs.freedesktop.org//show_bug.cgi?id=34240 */ int detail; int flags; XIValuatorState valuators; diff --git a/src/XExtInt.c b/src/XExtInt.c index f96e3ff..5a1bca6 100644 --- a/src/XExtInt.c +++ b/src/XExtInt.c @@ -1627,6 +1627,7 @@ wireToRawEvent(xXIRawEvent *in, XGenericEventCookie *cookie) out->time = in->time; out->detail = in->detail; out->deviceid = in->deviceid; + out->sourceid = 0; /* https://bugs.freedesktop.org/show_bug.cgi?id=34240 */ out->flags = in->flags; out->valuators.mask_len = in->valuators_len * 4; commit d79a9b174a79e89ca2507a61f2e12af25102313f Author: Peter Hutterer <peter.hutte...@who-t.net> Date: Tue Feb 1 07:36:08 2011 +1000 man: note that callers of XIQueryPointer must free the button mask. buttons_return->mask is allocated by the library and must be freed by the caller to avoid leaking. Reported-by: Matthias Clasen <mcla...@redhat.com> Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> diff --git a/man/XIQueryPointer.txt b/man/XIQueryPointer.txt index 445f8b5..73fc11e 100644 --- a/man/XIQueryPointer.txt +++ b/man/XIQueryPointer.txt @@ -76,6 +76,9 @@ DESCRIPTION selected to obtain the data for modifiers_return and group_return. + The mask field in buttons_return is dynamically allocated and + must be freed by the caller. + XIQueryPointer is identical to XQueryPointer but specifies the device explicitly. commit 1b376f371c2f866cd1cdf047e50210a5c69772b9 Author: Gaetan Nadon <mems...@videotron.ca> Date: Wed Feb 2 11:43:43 2011 -0500 config: comment, minor upgrade, quote and layout configure.ac Group statements per section as per Autoconf standard layout Quote statements where appropriate. Autoconf recommends not using dnl instead of # for comments Use AC_CONFIG_FILES to replace the deprecated AC_OUTPUT with parameters. Use AC_PROG_LIBTOOL to replace the deprecated AM_PROG_LIBTOOL Remove redundant AC_SUBST(*_CFLAGS) and/or *_LIBS Remove redundant AC_PROG_MAKE_SET included with AM_INIT_AUTOMAKE Remove redundant AC_CANONICAL_HOST included in XORG_DEFAULT_OPTIONS Add AC_CONFIG_SRCDIR([Makefile.am]) where missing Update minimum version of util-macros to at least 1.8. One or more of the above actions were applied No functional configuration changes This helps automated maintenance and release activities. Details can be found in http://wiki.x.org/wiki/NewModuleGuidelines Signed-off-by: Gaetan Nadon <mems...@videotron.ca> diff --git a/configure.ac b/configure.ac index 19e6bc5..405cd34 100644 --- a/configure.ac +++ b/configure.ac @@ -1,11 +1,18 @@ -dnl Process this file with autoconf to create configure. +# Initialize Autoconf AC_PREREQ([2.60]) +AC_INIT([libXi], [1.4.1], + [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [libXi]) +AC_CONFIG_SRCDIR([Makefile.am]) +AC_CONFIG_HEADERS([src/config.h]) -AC_INIT(libXi, 1.4.1, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], libXi) +# Initialize Automake AM_INIT_AUTOMAKE([foreign dist-bzip2]) -- To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/e1q3hnh-0006ha...@alioth.debian.org