Date: Friday, June 23, 2017 @ 06:12:22 Author: lcarlier Revision: 239743
upgpkg: lib32-libxi 1.7.9-1 upstream update 1.7.9 Modified: lib32-libxi/trunk/PKGBUILD Deleted: lib32-libxi/trunk/fix-gtk2-segfault.patch -------------------------+ PKGBUILD | 21 +--- fix-gtk2-segfault.patch | 241 ---------------------------------------------- 2 files changed, 6 insertions(+), 256 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2017-06-23 06:08:15 UTC (rev 239742) +++ PKGBUILD 2017-06-23 06:12:22 UTC (rev 239743) @@ -4,30 +4,21 @@ _pkgbasename=libxi pkgname=lib32-$_pkgbasename -pkgver=1.7.7 -pkgrel=2 +pkgver=1.7.9 +pkgrel=1 pkgdesc="X11 Input extension library (32-bit)" arch=('x86_64') -url="http://xorg.freedesktop.org" +url="https://xorg.freedesktop.org" depends=('lib32-libxext' 'lib32-libxfixes' 'inputproto' $_pkgbasename) makedepends=('pkgconfig' 'xorg-util-macros' gcc-multilib automake) options=(!libtool) license=('custom') -source=(${url}/releases/individual/lib/libXi-${pkgver}.tar.bz2{,.sig} - fix-gtk2-segfault.patch) -sha256sums=('996f834fa57b9b33ba36690f6f5c6a29320bc8213022943912462d8015b1e030' - 'SKIP' - '34ac1854b6bb14cbb048ddbd20cce7a4b2ad1e8ffa6b116aa20b0dfc56655c4b') +source=(${url}/releases/individual/lib/libXi-${pkgver}.tar.bz2{,.sig}) +sha256sums=('c2e6b8ff84f9448386c1b5510a5cf5a16d788f76db018194dacdc200180faf45' + 'SKIP') validpgpkeys=('3C2C43D9447D5938EF4551EBE23B7E70B467F0BF') # Peter Hutterer validpgpkeys+=('C41C985FDCF1E5364576638B687393EE37D128F8') # Matthieu Herrb <matthieu.he...@laas.fr> -prepare() { - cd "${srcdir}/libXi-${pkgver}" - - #fix FS#51298 - patch -Np1 -i ../fix-gtk2-segfault.patch -} - build() { export CC="gcc -m32" export CXX="g++ -m32" Deleted: fix-gtk2-segfault.patch =================================================================== --- fix-gtk2-segfault.patch 2017-06-23 06:08:15 UTC (rev 239742) +++ fix-gtk2-segfault.patch 2017-06-23 06:12:22 UTC (rev 239743) @@ -1,241 +0,0 @@ -From patchwork Thu Oct 13 03:58:22 2016 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -Subject: [v2,libXi,1/2] SizeClassInfo can return 0 even without an error -From: Peter Hutterer <peter.hutte...@who-t.net> -X-Patchwork-Id: 115413 -Message-Id: <1476331103-24072-1-git-send-email-peter.hutte...@who-t.net> -To: xorg-de...@lists.freedesktop.org -Cc: Niels Ole Salscheider <niels_...@salscheider-online.de> -Date: Thu, 13 Oct 2016 13:58:22 +1000 - -From: Niels Ole Salscheider <niels_...@salscheider-online.de> - -Catch the error case separately. Commit 19a9cd607d added length checking to -SizeClassInfo but re-used the return value of 0 for an error. A device without -classes (as is initialized by xf86-input-libinput for tablets) can -legitimately return 0 and erroneously triggers an error. -Fix this by using a separate value for the error. - -Reproducible by calling XListInputDevices() with a tablet attached. - -This fixes a regression introduced in commit 19a9cd607d. - -Signed-off-by: Niels Ole Salscheider <niels_...@salscheider-online.de> -Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> ---- -Changes to v1: -- don't touch *size until we're sure. -- expand commit message - -Niels: -I left you as author and your signed-off-by since it's essentially your -patch with a minor change. - - src/XListDev.c | 24 +++++++++++++----------- - 1 file changed, 13 insertions(+), 11 deletions(-) - -diff --git a/src/XListDev.c b/src/XListDev.c -index f850cd0..e4bd3d5 100644 ---- a/src/XListDev.c -+++ b/src/XListDev.c -@@ -73,27 +73,28 @@ static int pad_to_xid(int base_size) - return ((base_size + padsize - 1)/padsize) * padsize; - } - --static size_t --SizeClassInfo(xAnyClassPtr *any, size_t len, int num_classes) -+static int -+SizeClassInfo(xAnyClassPtr *any, size_t len, int num_classes, size_t *size) - { -- int size = 0; - int j; -+ size_t sz = 0; -+ - for (j = 0; j < num_classes; j++) { - switch ((*any)->class) { - case KeyClass: -- size += pad_to_xid(sizeof(XKeyInfo)); -+ sz += pad_to_xid(sizeof(XKeyInfo)); - break; - case ButtonClass: -- size += pad_to_xid(sizeof(XButtonInfo)); -+ sz += pad_to_xid(sizeof(XButtonInfo)); - break; - case ValuatorClass: - { - xValuatorInfoPtr v; - - if (len < sizeof(v)) -- return 0; -+ return 1; - v = (xValuatorInfoPtr) *any; -- size += pad_to_xid(sizeof(XValuatorInfo) + -+ sz += pad_to_xid(sizeof(XValuatorInfo) + - (v->num_axes * sizeof(XAxisInfo))); - break; - } -@@ -101,11 +102,13 @@ SizeClassInfo(xAnyClassPtr *any, size_t len, int num_classes) - break; - } - if ((*any)->length > len) -- return 0; -+ return 1; - *any = (xAnyClassPtr) ((char *)(*any) + (*any)->length); - } - -- return size; -+ *size = sz; -+ -+ return 0; - } - - static void -@@ -220,8 +223,7 @@ XListInputDevices( - sav_any = any; - end = (char *)list + rlen; - for (i = 0; i < *ndevices; i++, list++) { -- s = SizeClassInfo(&any, end - (char *)any, (int)list->num_classes); -- if (!s) -+ if(SizeClassInfo(&any, end - (char *)any, (int)list->num_classes, &s)) - goto out; - size += s; - } - -From patchwork Thu Oct 13 03:58:23 2016 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -Subject: [v2, libXi, - 2/2] XListInputDevices: don't touch ndevices in case of error -From: Peter Hutterer <peter.hutte...@who-t.net> -X-Patchwork-Id: 115414 -Message-Id: <1476331103-24072-2-git-send-email-peter.hutte...@who-t.net> -To: xorg-de...@lists.freedesktop.org -Cc: Niels Ole Salscheider <niels_...@salscheider-online.de> -Date: Thu, 13 Oct 2016 13:58:23 +1000 - -We used to always set *ndevices to the number of devices returned by the -server. This magically worked because we pretty much never returned an error -except on faulty server or library implementations. With 19a9cd60 we now have -more chances of getting an error, so the polite thing is to just leave *ndevices -alone when we error out. - -Document it as such in the man page, just in case someone accidentally reads -it. - -Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> -CC: Niels Ole Salscheider <niels_...@salscheider-online.de> ---- -Changes to v1: -- Niels' first patch set ndevices to 0, this one leaves it untouched - - man/XListInputDevices.txt | 12 ++++++++++-- - src/XListDev.c | 21 ++++++++++++--------- - 2 files changed, 22 insertions(+), 11 deletions(-) - -diff --git a/man/XListInputDevices.txt b/man/XListInputDevices.txt -index 276660d..450f377 100644 ---- a/man/XListInputDevices.txt -+++ b/man/XListInputDevices.txt -@@ -220,5 +220,13 @@ DESCRIPTION - Floating. If the device is a master device, attached specifies - the device ID of the master device this device is paired with. - -- To free the XDeviceInfo array created by XListInputDevices, use -- XFreeDeviceList. -+RETURN VALUE -+------------ -+ -+ XListInputDevices returns a pointer to an array of XDeviceInfo -+ structs and sets ndevices_return to the number of elements in -+ that array. To free the XDeviceInfo array created by -+ XListInputDevices, use XFreeDeviceList. -+ -+ On error, XListInputDevices returns NULL and ndevices_return is -+ left unmodified. -diff --git a/src/XListDev.c b/src/XListDev.c -index e4bd3d5..dda6011 100644 ---- a/src/XListDev.c -+++ b/src/XListDev.c -@@ -175,7 +175,7 @@ ParseClassInfo(xAnyClassPtr *any, XAnyClassPtr *Any, int num_classes) - XDeviceInfo * - XListInputDevices( - register Display *dpy, -- int *ndevices) -+ int *ndevices_return) - { - size_t s, size; - xListInputDevicesReq *req; -@@ -190,6 +190,7 @@ XListInputDevices( - int i; - unsigned long rlen; - XExtDisplayInfo *info = XInput_find_display(dpy); -+ int ndevices; - - LockDisplay(dpy); - if (_XiCheckExtInit(dpy, XInput_Initial_Release, info) == -1) -@@ -205,8 +206,8 @@ XListInputDevices( - return (XDeviceInfo *) NULL; - } - -- if ((*ndevices = rep.ndevices)) { /* at least 1 input device */ -- size = *ndevices * sizeof(XDeviceInfo); -+ if ((ndevices = rep.ndevices)) { /* at least 1 input device */ -+ size = ndevices * sizeof(XDeviceInfo); - if (rep.length < (INT_MAX >> 2)) { - rlen = rep.length << 2; /* multiply length by 4 */ - slist = list = Xmalloc(rlen); -@@ -219,17 +220,17 @@ XListInputDevices( - } - _XRead(dpy, (char *)list, rlen); - -- any = (xAnyClassPtr) ((char *)list + (*ndevices * sizeof(xDeviceInfo))); -+ any = (xAnyClassPtr) ((char *)list + (ndevices * sizeof(xDeviceInfo))); - sav_any = any; - end = (char *)list + rlen; -- for (i = 0; i < *ndevices; i++, list++) { -+ for (i = 0; i < ndevices; i++, list++) { - if(SizeClassInfo(&any, end - (char *)any, (int)list->num_classes, &s)) - goto out; - size += s; - } - - Nptr = ((unsigned char *)list) + rlen; -- for (i = 0, nptr = (unsigned char *)any; i < *ndevices; i++) { -+ for (i = 0, nptr = (unsigned char *)any; i < ndevices; i++) { - if (nptr >= Nptr) - goto out; - size += *nptr + 1; -@@ -245,10 +246,10 @@ XListInputDevices( - } - sclist = clist; - Any = (XAnyClassPtr) ((char *)clist + -- (*ndevices * sizeof(XDeviceInfo))); -+ (ndevices * sizeof(XDeviceInfo))); - list = slist; - any = sav_any; -- for (i = 0; i < *ndevices; i++, list++, clist++) { -+ for (i = 0; i < ndevices; i++, list++, clist++) { - clist->type = list->type; - clist->id = list->id; - clist->use = list->use; -@@ -261,7 +262,7 @@ XListInputDevices( - clist = sclist; - nptr = (unsigned char *)any; - Nptr = (unsigned char *)Any; -- for (i = 0; i < *ndevices; i++, clist++) { -+ for (i = 0; i < ndevices; i++, clist++) { - clist->name = (char *)Nptr; - memcpy(Nptr, nptr + 1, *nptr); - Nptr += (*nptr); -@@ -270,6 +271,8 @@ XListInputDevices( - } - } - -+ *ndevices_return = ndevices; -+ - out: - XFree((char *)slist); - UnlockDisplay(dpy);