summaryrefslogtreecommitdiff
path: root/x11/libXi
diff options
context:
space:
mode:
authorbjs <bjs@pkgsrc.org>2008-01-29 03:45:36 +0000
committerbjs <bjs@pkgsrc.org>2008-01-29 03:45:36 +0000
commit84d0bb18f4f8cd1aa361ab3b6d389e8689b8395a (patch)
tree0fa2ad0acef3abcabc4088a6c6e046b8d9c13b91 /x11/libXi
parent231781864e7aa37517af0c52c8a42ae0cc457578 (diff)
downloadpkgsrc-84d0bb18f4f8cd1aa361ab3b6d389e8689b8395a.tar.gz
Add two bug fixes from GIT (see patch headings for more info).
Bump rev.
Diffstat (limited to 'x11/libXi')
-rw-r--r--x11/libXi/Makefile3
-rw-r--r--x11/libXi/distinfo4
-rw-r--r--x11/libXi/patches/patch-aa18
-rw-r--r--x11/libXi/patches/patch-ab49
4 files changed, 72 insertions, 2 deletions
diff --git a/x11/libXi/Makefile b/x11/libXi/Makefile
index 4d4b9003fc6..39ae3592303 100644
--- a/x11/libXi/Makefile
+++ b/x11/libXi/Makefile
@@ -1,7 +1,8 @@
-# $NetBSD: Makefile,v 1.6 2007/09/21 19:28:47 bjs Exp $
+# $NetBSD: Makefile,v 1.7 2008/01/29 03:45:36 bjs Exp $
#
DISTNAME= libXi-1.1.3
+PKGREVISION= 1
CATEGORIES= x11 devel
MASTER_SITES= http://xorg.freedesktop.org/releases/individual/lib/
EXTRACT_SUFX= .tar.bz2
diff --git a/x11/libXi/distinfo b/x11/libXi/distinfo
index e5606db1db6..ac90c680910 100644
--- a/x11/libXi/distinfo
+++ b/x11/libXi/distinfo
@@ -1,5 +1,7 @@
-$NetBSD: distinfo,v 1.7 2007/09/21 20:47:14 joerg Exp $
+$NetBSD: distinfo,v 1.8 2008/01/29 03:45:36 bjs Exp $
SHA1 (libXi-1.1.3.tar.bz2) = 60608bcbebadc5fe0b51b5012e9301eb720988fe
RMD160 (libXi-1.1.3.tar.bz2) = e6446f28a903eed54eccc5d4df685f9623942a0b
Size (libXi-1.1.3.tar.bz2) = 248007 bytes
+SHA1 (patch-aa) = 2bf138eb5f8fa4e9602579a6842278a7e5446fc5
+SHA1 (patch-ab) = 169dc342cb2631f10b9390568e9e39c91b595303
diff --git a/x11/libXi/patches/patch-aa b/x11/libXi/patches/patch-aa
new file mode 100644
index 00000000000..cc9ae47cbbb
--- /dev/null
+++ b/x11/libXi/patches/patch-aa
@@ -0,0 +1,18 @@
+$NetBSD: patch-aa,v 1.3 2008/01/29 03:45:36 bjs Exp $
+
+Coverity #743/744: Returned without freeing storage bufp/savp
+
+If either bufp or savp failed to malloc, we returned without freeing
+the other. (from GIT)
+
+--- src/XGMotion.c.orig 2007-09-05 12:41:58.000000000 -0400
++++ src/XGMotion.c
+@@ -115,6 +115,8 @@ Time stop;
+ savp = readp = (int *)Xmalloc(size);
+ bufp = (int *)Xmalloc(size2);
+ if (!bufp || !savp) {
++ Xfree(bufp);
++ Xfree(savp);
+ *nEvents = 0;
+ _XEatData(dpy, (unsigned long)size);
+ UnlockDisplay(dpy);
diff --git a/x11/libXi/patches/patch-ab b/x11/libXi/patches/patch-ab
new file mode 100644
index 00000000000..875840d02d9
--- /dev/null
+++ b/x11/libXi/patches/patch-ab
@@ -0,0 +1,49 @@
+$NetBSD: patch-ab,v 1.1 2008/01/29 03:45:36 bjs Exp $
+
+GetDeviceControl: calculate the length field correctly.
+
+Length field should indicate the length of the struct in bytes,
+not the length of the pointer to the struct. (from GIT)
+
+--- src/XGetDCtl.c.orig 2007-09-05 12:41:58.000000000 -0400
++++ src/XGetDCtl.c
+@@ -104,6 +104,12 @@ XGetDeviceControl(dpy, dev, control)
+ sav = d;
+ _XRead(dpy, (char *)d, nbytes);
+
++ /* In theory, we should just be able to use d->length to get the size.
++ * Turns out that a number of X servers (up to and including server
++ * 1.4) sent the wrong length value down the wire. So to not break
++ * apps that run against older servers, we have to calculate the size
++ * manually.
++ */
+ switch (d->control) {
+ case DEVICE_RESOLUTION:
+ {
+@@ -170,7 +176,7 @@ XGetDeviceControl(dpy, dev, control)
+ XDeviceAbsCalibState *C = (XDeviceAbsCalibState *) Device;
+
+ C->control = DEVICE_ABS_CALIB;
+- C->length = sizeof(C);
++ C->length = sizeof(XDeviceAbsCalibState);
+ C->min_x = c->min_x;
+ C->max_x = c->max_x;
+ C->min_y = c->min_y;
+@@ -188,7 +194,7 @@ XGetDeviceControl(dpy, dev, control)
+ XDeviceAbsAreaState *A = (XDeviceAbsAreaState *) Device;
+
+ A->control = DEVICE_ABS_AREA;
+- A->length = sizeof(A);
++ A->length = sizeof(XDeviceAbsAreaState);
+ A->offset_x = a->offset_x;
+ A->offset_y = a->offset_y;
+ A->width = a->width;
+@@ -204,7 +210,7 @@ XGetDeviceControl(dpy, dev, control)
+ XDeviceCoreState *C = (XDeviceCoreState *) Device;
+
+ C->control = DEVICE_CORE;
+- C->length = sizeof(C);
++ C->length = sizeof(XDeviceCoreState);
+ C->status = c->status;
+ C->iscore = c->iscore;
+