aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--main/libxext/0001-Use-_XEatDataWords-to-avoid-overflow-of-rep.length-b.patch260
-rw-r--r--main/libxext/0002-integer-overflow-in-XcupGetReservedColormapEntries-C.patch60
-rw-r--r--main/libxext/0003-integer-overflow-in-XcupStoreColors-CVE-2013-1982-2-.patch63
-rw-r--r--main/libxext/0004-several-integer-overflows-in-XdbeGetVisualInfo-CVE-2.patch84
-rw-r--r--main/libxext/0005-integer-overflow-in-XeviGetVisualInfo-CVE-2013-1982-.patch70
-rw-r--r--main/libxext/0006-integer-overflow-in-XShapeGetRectangles-CVE-2013-198.patch74
-rw-r--r--main/libxext/0007-integer-overflow-in-XSyncListSystemCounters-CVE-2013.patch87
-rw-r--r--main/libxext/APKBUILD43
8 files changed, 6 insertions, 735 deletions
diff --git a/main/libxext/0001-Use-_XEatDataWords-to-avoid-overflow-of-rep.length-b.patch b/main/libxext/0001-Use-_XEatDataWords-to-avoid-overflow-of-rep.length-b.patch
deleted file mode 100644
index 58f29757e0..0000000000
--- a/main/libxext/0001-Use-_XEatDataWords-to-avoid-overflow-of-rep.length-b.patch
+++ /dev/null
@@ -1,260 +0,0 @@
-From ca84a813716f9de691dc3f60390d83af4b5ae534 Mon Sep 17 00:00:00 2001
-From: Alan Coopersmith <alan.coopersmith@oracle.com>
-Date: Sat, 13 Apr 2013 09:32:12 -0700
-Subject: [PATCH 1/7] Use _XEatDataWords to avoid overflow of rep.length bit
- shifting
-
-rep.length is a CARD32, so rep.length << 2 could overflow in 32-bit builds
-
-Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
----
- COPYING | 3 ++-
- configure.ac | 6 ++++++
- src/Makefile.am | 1 +
- src/XEVI.c | 4 +++-
- src/XMultibuf.c | 3 ++-
- src/XSecurity.c | 3 ++-
- src/XShape.c | 3 ++-
- src/XSync.c | 3 ++-
- src/Xcup.c | 7 ++++---
- src/eat.h | 40 ++++++++++++++++++++++++++++++++++++++++
- 10 files changed, 64 insertions(+), 9 deletions(-)
- create mode 100644 src/eat.h
-
-diff --git a/COPYING b/COPYING
-index 80622a0..e3a63ef 100644
---- a/COPYING
-+++ b/COPYING
-@@ -160,7 +160,8 @@ makes no representations about the suitability for any purpose
- of the information in this document. This documentation is
- provided ``as is'' without express or implied warranty.
-
--Copyright (c) 1999, 2005, 2006, Oracle and/or its affiliates. All rights reserved.
-+Copyright (c) 1999, 2005, 2006, 2013, Oracle and/or its affiliates.
-+All rights reserved.
-
- Permission is hereby granted, free of charge, to any person obtaining a
- copy of this software and associated documentation files (the "Software"),
-diff --git a/configure.ac b/configure.ac
-index 63775de..fb9888d 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -38,6 +38,12 @@ AC_SUBST(XEXT_SOREV)
- # Obtain compiler/linker options for depedencies
- PKG_CHECK_MODULES(XEXT, [xproto >= 7.0.13] [x11 >= 1.1.99.1] [xextproto >= 7.1.99])
-
-+# Check for _XEatDataWords function that may be patched into older Xlib releases
-+SAVE_LIBS="$LIBS"
-+LIBS="$XEXT_LIBS"
-+AC_CHECK_FUNCS([_XEatDataWords])
-+LIBS="$SAVE_LIBS"
-+
- # Allow checking code with lint, sparse, etc.
- XORG_WITH_LINT
- XORG_LINT_LIBRARY([Xext])
-diff --git a/src/Makefile.am b/src/Makefile.am
-index e236c33..b828547 100644
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -12,6 +12,7 @@ libXext_la_LDFLAGS = -version-number $(XEXT_SOREV) -no-undefined
- libXext_la_LIBADD = $(XEXT_LIBS)
-
- libXext_la_SOURCES = \
-+ eat.h \
- DPMS.c \
- MITMisc.c \
- XAppgroup.c \
-diff --git a/src/XEVI.c b/src/XEVI.c
-index eb09daa..0125c51 100644
---- a/src/XEVI.c
-+++ b/src/XEVI.c
-@@ -30,6 +30,8 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
- #include <X11/extensions/Xext.h>
- #include <X11/extensions/extutil.h>
- #include <X11/Xutil.h>
-+#include "eat.h"
-+
- static XExtensionInfo *xevi_info;/* needs to move to globals.c */
- static const char *xevi_extension_name = EVINAME;
- #define XeviCheckExtension(dpy,i,val) \
-@@ -171,7 +173,7 @@ Status XeviGetVisualInfo(
- xInfoPtr = temp_xInfo = (xExtendedVisualInfo *)Xmalloc(sz_xInfo);
- xConflictPtr = temp_conflict = (VisualID32 *)Xmalloc(sz_xConflict);
- if (!*evi_return || !temp_xInfo || !temp_conflict) {
-- _XEatData(dpy, (sz_xInfo + sz_xConflict + 3) & ~3);
-+ _XEatDataWords(dpy, rep.length);
- UnlockDisplay(dpy);
- SyncHandle();
- if (evi_return)
-diff --git a/src/XMultibuf.c b/src/XMultibuf.c
-index 7a746ba..43d56d3 100644
---- a/src/XMultibuf.c
-+++ b/src/XMultibuf.c
-@@ -34,6 +34,7 @@ in this Software without prior written authorization from The Open Group.
- #include <X11/extensions/extutil.h>
- #include <X11/extensions/multibufproto.h>
- #include <X11/extensions/multibuf.h>
-+#include "eat.h"
-
- static XExtensionInfo _multibuf_info_data;
- static XExtensionInfo *multibuf_info = &_multibuf_info_data;
-@@ -408,7 +409,7 @@ Status XmbufGetWindowAttributes (
- attr->buffers = (Multibuffer *) Xmalloc((unsigned) nbytes);
- nbytes = rep.length << 2;
- if (! attr->buffers) {
-- _XEatData(dpy, (unsigned long) nbytes);
-+ _XEatDataWords(dpy, rep.length);
- UnlockDisplay(dpy);
- SyncHandle();
- return (0);
-diff --git a/src/XSecurity.c b/src/XSecurity.c
-index f8c7da1..ab17755 100644
---- a/src/XSecurity.c
-+++ b/src/XSecurity.c
-@@ -33,6 +33,7 @@ in this Software without prior written authorization from The Open Group.
- #include <X11/extensions/extutil.h>
- #include <X11/extensions/securproto.h>
- #include <X11/extensions/security.h>
-+#include "eat.h"
-
- static XExtensionInfo _Security_info_data;
- static XExtensionInfo *Security_info = &_Security_info_data;
-@@ -282,7 +283,7 @@ XSecurityGenerateAuthorization(
- }
- else
- {
-- _XEatData(dpy, (unsigned long) (rep.dataLength + 3) & ~3);
-+ _XEatDataWords(dpy, rep.length);
- }
-
- UnlockDisplay (dpy);
-diff --git a/src/XShape.c b/src/XShape.c
-index 6e8fbae..3987876 100644
---- a/src/XShape.c
-+++ b/src/XShape.c
-@@ -35,6 +35,7 @@ in this Software without prior written authorization from The Open Group.
- #include <X11/extensions/extutil.h>
- #include <X11/extensions/shape.h>
- #include <X11/extensions/shapeproto.h>
-+#include "eat.h"
-
- static XExtensionInfo _shape_info_data;
- static XExtensionInfo *shape_info = &_shape_info_data;
-@@ -468,7 +469,7 @@ XRectangle *XShapeGetRectangles (
- Xfree (xrects);
- if (rects)
- Xfree (rects);
-- _XEatData (dpy, *count * sizeof (xRectangle));
-+ _XEatDataWords (dpy, rep.length);
- rects = NULL;
- *count = 0;
- } else {
-diff --git a/src/XSync.c b/src/XSync.c
-index 5775293..3ca1308 100644
---- a/src/XSync.c
-+++ b/src/XSync.c
-@@ -59,6 +59,7 @@ PERFORMANCE OF THIS SOFTWARE.
- #include <X11/extensions/extutil.h>
- #include <X11/extensions/sync.h>
- #include <X11/extensions/syncproto.h>
-+#include "eat.h"
-
- static XExtensionInfo _sync_info_data;
- static XExtensionInfo *sync_info = &_sync_info_data;
-@@ -364,7 +365,7 @@ XSyncListSystemCounters(Display *dpy, int *n_counters_return)
- {
- if (list) Xfree((char *) list);
- if (pWireSysCounter) Xfree((char *) pWireSysCounter);
-- _XEatData(dpy, (unsigned long) replylen);
-+ _XEatDataWords(dpy, rep.length);
- list = NULL;
- goto bail;
- }
-diff --git a/src/Xcup.c b/src/Xcup.c
-index bb9e90f..1f1d625 100644
---- a/src/Xcup.c
-+++ b/src/Xcup.c
-@@ -36,6 +36,7 @@ in this Software without prior written authorization from The Open Group.
- #include <X11/extensions/cupproto.h>
- #include <X11/extensions/Xext.h>
- #include <X11/extensions/extutil.h>
-+#include "eat.h"
-
- static XExtensionInfo _xcup_info_data;
- static XExtensionInfo *xcup_info = &_xcup_info_data;
-@@ -144,7 +145,7 @@ XcupGetReservedColormapEntries(
- rbufp = rbuf;
-
- if (rbufp == NULL) {
-- _XEatData (dpy, (unsigned long) nbytes);
-+ _XEatDataWords(dpy, rep.length);
- UnlockDisplay (dpy);
- SyncHandle ();
- return False;
-@@ -221,7 +222,7 @@ XcupStoreColors(
- nbytes = nentries * SIZEOF (xColorItem);
-
- if (nentries != ncolors) {
-- _XEatData (dpy, (unsigned long) nbytes);
-+ _XEatDataWords(dpy, rep.length);
- UnlockDisplay (dpy);
- SyncHandle ();
- return False;
-@@ -233,7 +234,7 @@ XcupStoreColors(
- rbufp = rbuf;
-
- if (rbufp == NULL) {
-- _XEatData (dpy, (unsigned long) nbytes);
-+ _XEatDataWords(dpy, rep.length);
- UnlockDisplay (dpy);
- SyncHandle ();
- return False;
-diff --git a/src/eat.h b/src/eat.h
-new file mode 100644
-index 0000000..239532b
---- /dev/null
-+++ b/src/eat.h
-@@ -0,0 +1,40 @@
-+/*
-+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
-+ *
-+ * Permission is hereby granted, free of charge, to any person obtaining a
-+ * copy of this software and associated documentation files (the "Software"),
-+ * to deal in the Software without restriction, including without limitation
-+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
-+ * and/or sell copies of the Software, and to permit persons to whom the
-+ * Software is furnished to do so, subject to the following conditions:
-+ *
-+ * The above copyright notice and this permission notice (including the next
-+ * paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
-+ */
-+
-+#ifdef HAVE_CONFIG_H
-+# include "config.h"
-+#endif
-+
-+#ifndef HAVE__XEATDATAWORDS
-+#include <X11/Xmd.h> /* for LONG64 on 64-bit platforms */
-+#include <limits.h>
-+
-+static inline void _XEatDataWords(Display *dpy, unsigned long n)
-+{
-+# ifndef LONG64
-+ if (n >= (ULONG_MAX >> 2))
-+ _XIOError(dpy);
-+# endif
-+ _XEatData (dpy, n << 2);
-+}
-+#endif
---
-1.8.2.3
-
diff --git a/main/libxext/0002-integer-overflow-in-XcupGetReservedColormapEntries-C.patch b/main/libxext/0002-integer-overflow-in-XcupGetReservedColormapEntries-C.patch
deleted file mode 100644
index d974de57af..0000000000
--- a/main/libxext/0002-integer-overflow-in-XcupGetReservedColormapEntries-C.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From d05f27a6f74cb419ad5a437f2e4690b17e7faee5 Mon Sep 17 00:00:00 2001
-From: Alan Coopersmith <alan.coopersmith@oracle.com>
-Date: Sat, 9 Mar 2013 14:40:33 -0800
-Subject: [PATCH 2/7] integer overflow in XcupGetReservedColormapEntries()
- [CVE-2013-1982 1/6]
-
-If the computed number of entries is large enough that it overflows when
-multiplied by the size of a xColorItem struct, or is treated as negative
-when compared to the size of the stack allocated buffer, then memory
-corruption can occur when more bytes are read from the X server than the
-size of the buffer we allocated to hold them.
-
-Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
-Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
----
- src/Xcup.c | 19 ++++++++++++-------
- 1 file changed, 12 insertions(+), 7 deletions(-)
-
-diff --git a/src/Xcup.c b/src/Xcup.c
-index 1f1d625..670f356 100644
---- a/src/Xcup.c
-+++ b/src/Xcup.c
-@@ -36,6 +36,7 @@ in this Software without prior written authorization from The Open Group.
- #include <X11/extensions/cupproto.h>
- #include <X11/extensions/Xext.h>
- #include <X11/extensions/extutil.h>
-+#include <limits.h>
- #include "eat.h"
-
- static XExtensionInfo _xcup_info_data;
-@@ -134,15 +135,19 @@ XcupGetReservedColormapEntries(
- req->xcupReqType = X_XcupGetReservedColormapEntries;
- req->screen = screen;
- if (_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
-- long nbytes;
-+ unsigned long nbytes;
- xColorItem* rbufp;
-- int nentries = rep.length / 3;
-+ unsigned int nentries = rep.length / 3;
-
-- nbytes = nentries * SIZEOF (xColorItem);
-- if (nentries > TYP_RESERVED_ENTRIES)
-- rbufp = (xColorItem*) Xmalloc (nbytes);
-- else
-- rbufp = rbuf;
-+ if (nentries < (INT_MAX / SIZEOF (xColorItem))) {
-+ nbytes = nentries * SIZEOF (xColorItem);
-+
-+ if (nentries > TYP_RESERVED_ENTRIES)
-+ rbufp = Xmalloc (nbytes);
-+ else
-+ rbufp = rbuf;
-+ } else
-+ rbufp = NULL;
-
- if (rbufp == NULL) {
- _XEatDataWords(dpy, rep.length);
---
-1.8.2.3
-
diff --git a/main/libxext/0003-integer-overflow-in-XcupStoreColors-CVE-2013-1982-2-.patch b/main/libxext/0003-integer-overflow-in-XcupStoreColors-CVE-2013-1982-2-.patch
deleted file mode 100644
index 0be477d23d..0000000000
--- a/main/libxext/0003-integer-overflow-in-XcupStoreColors-CVE-2013-1982-2-.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From 082d70b19848059ba78c9d1c315114fb07e8c0ef Mon Sep 17 00:00:00 2001
-From: Alan Coopersmith <alan.coopersmith@oracle.com>
-Date: Sat, 9 Mar 2013 14:40:33 -0800
-Subject: [PATCH 3/7] integer overflow in XcupStoreColors() [CVE-2013-1982 2/6]
-
-If the computed number of entries is large enough that it overflows when
-multiplied by the size of a xColorItem struct, or is treated as negative
-when compared to the size of the stack allocated buffer, then memory
-corruption can occur when more bytes are read from the X server than the
-size of the buffer we allocated to hold them.
-
-The requirement to match the number of colors specified by the caller makes
-this much harder to hit than the one in XcupGetReservedColormapEntries()
-
-Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
-Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
----
- src/Xcup.c | 25 +++++++++++--------------
- 1 file changed, 11 insertions(+), 14 deletions(-)
-
-diff --git a/src/Xcup.c b/src/Xcup.c
-index 670f356..cdc64c2 100644
---- a/src/Xcup.c
-+++ b/src/Xcup.c
-@@ -219,24 +219,21 @@ XcupStoreColors(
- }
-
- if (_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
-- long nbytes;
-+ unsigned long nbytes;
- xColorItem* rbufp;
- xColorItem* cs;
-- int nentries = rep.length / 3;
--
-- nbytes = nentries * SIZEOF (xColorItem);
-+ unsigned int nentries = rep.length / 3;
-
-- if (nentries != ncolors) {
-- _XEatDataWords(dpy, rep.length);
-- UnlockDisplay (dpy);
-- SyncHandle ();
-- return False;
-- }
-+ if ((nentries == ncolors) &&
-+ (nentries < (INT_MAX / SIZEOF (xColorItem)))) {
-+ nbytes = nentries * SIZEOF (xColorItem);
-
-- if (ncolors > 256)
-- rbufp = (xColorItem*) Xmalloc (nbytes);
-- else
-- rbufp = rbuf;
-+ if (ncolors > 256)
-+ rbufp = Xmalloc (nbytes);
-+ else
-+ rbufp = rbuf;
-+ } else
-+ rbufp = NULL;
-
- if (rbufp == NULL) {
- _XEatDataWords(dpy, rep.length);
---
-1.8.2.3
-
diff --git a/main/libxext/0004-several-integer-overflows-in-XdbeGetVisualInfo-CVE-2.patch b/main/libxext/0004-several-integer-overflows-in-XdbeGetVisualInfo-CVE-2.patch
deleted file mode 100644
index 75c50e0025..0000000000
--- a/main/libxext/0004-several-integer-overflows-in-XdbeGetVisualInfo-CVE-2.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-From 96d1da55a08c4cd52b763cb07bdce5cdcbec4da8 Mon Sep 17 00:00:00 2001
-From: Alan Coopersmith <alan.coopersmith@oracle.com>
-Date: Sat, 9 Mar 2013 14:40:33 -0800
-Subject: [PATCH 4/7] several integer overflows in XdbeGetVisualInfo()
- [CVE-2013-1982 3/6]
-
-If the number of screens or visuals reported by the server is large enough
-that it overflows when multiplied by the size of the appropriate struct,
-then memory corruption can occur when more bytes are read from the X server
-than the size of the buffer we allocated to hold them.
-
-Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
-Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
----
- src/Xdbe.c | 27 +++++++++++++++++----------
- 1 file changed, 17 insertions(+), 10 deletions(-)
-
-diff --git a/src/Xdbe.c b/src/Xdbe.c
-index 4b5fa18..016886c 100644
---- a/src/Xdbe.c
-+++ b/src/Xdbe.c
-@@ -39,6 +39,8 @@
- #include <X11/extensions/extutil.h>
- #include <X11/extensions/Xdbe.h>
- #include <X11/extensions/dbeproto.h>
-+#include <limits.h>
-+#include "eat.h"
-
- static XExtensionInfo _dbe_info_data;
- static XExtensionInfo *dbe_info = &_dbe_info_data;
-@@ -352,9 +354,12 @@ XdbeScreenVisualInfo *XdbeGetVisualInfo (
- *num_screens = rep.m;
-
- /* allocate list of visual information to be returned */
-- if (!(scrVisInfo =
-- (XdbeScreenVisualInfo *)Xmalloc(
-- (unsigned)(*num_screens * sizeof(XdbeScreenVisualInfo))))) {
-+ if ((*num_screens > 0) && (*num_screens < 65536))
-+ scrVisInfo = Xmalloc(*num_screens * sizeof(XdbeScreenVisualInfo));
-+ else
-+ scrVisInfo = NULL;
-+ if (scrVisInfo == NULL) {
-+ _XEatDataWords(dpy, rep.length);
- UnlockDisplay (dpy);
- SyncHandle ();
- return NULL;
-@@ -362,25 +367,27 @@ XdbeScreenVisualInfo *XdbeGetVisualInfo (
-
- for (i = 0; i < *num_screens; i++)
- {
-- int nbytes;
- int j;
-- long c;
-+ unsigned long c;
-
-- _XRead32 (dpy, &c, sizeof(CARD32));
-- scrVisInfo[i].count = c;
-+ _XRead32 (dpy, (long *) &c, sizeof(CARD32));
-
-- nbytes = scrVisInfo[i].count * sizeof(XdbeVisualInfo);
-+ if (c < 65536) {
-+ scrVisInfo[i].count = c;
-+ scrVisInfo[i].visinfo = Xmalloc(c * sizeof(XdbeVisualInfo));
-+ } else
-+ scrVisInfo[i].visinfo = NULL;
-
- /* if we can not allocate the list of visual/depth info
- * then free the lists that we already allocate as well
- * as the visual info list itself
- */
-- if (!(scrVisInfo[i].visinfo = (XdbeVisualInfo *)Xmalloc(
-- (unsigned)nbytes))) {
-+ if (scrVisInfo[i].visinfo == NULL) {
- for (j = 0; j < i; j++) {
- Xfree ((char *)scrVisInfo[j].visinfo);
- }
- Xfree ((char *)scrVisInfo);
-+ _XEatDataWords(dpy, rep.length);
- UnlockDisplay (dpy);
- SyncHandle ();
- return NULL;
---
-1.8.2.3
-
diff --git a/main/libxext/0005-integer-overflow-in-XeviGetVisualInfo-CVE-2013-1982-.patch b/main/libxext/0005-integer-overflow-in-XeviGetVisualInfo-CVE-2013-1982-.patch
deleted file mode 100644
index e1aa4cc383..0000000000
--- a/main/libxext/0005-integer-overflow-in-XeviGetVisualInfo-CVE-2013-1982-.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From 67ecdcf7e29de9fa78b421122620525ed2c7db88 Mon Sep 17 00:00:00 2001
-From: Alan Coopersmith <alan.coopersmith@oracle.com>
-Date: Sat, 9 Mar 2013 14:40:33 -0800
-Subject: [PATCH 5/7] integer overflow in XeviGetVisualInfo() [CVE-2013-1982
- 4/6]
-
-If the number of visuals or conflicts reported by the server is large
-enough that it overflows when multiplied by the size of the appropriate
-struct, then memory corruption can occur when more bytes are read from
-the X server than the size of the buffer we allocated to hold them.
-
-Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
-Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
----
- src/XEVI.c | 25 ++++++++++++++++++-------
- 1 file changed, 18 insertions(+), 7 deletions(-)
-
-diff --git a/src/XEVI.c b/src/XEVI.c
-index 0125c51..5a95583 100644
---- a/src/XEVI.c
-+++ b/src/XEVI.c
-@@ -30,6 +30,7 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
- #include <X11/extensions/Xext.h>
- #include <X11/extensions/extutil.h>
- #include <X11/Xutil.h>
-+#include <limits.h>
- #include "eat.h"
-
- static XExtensionInfo *xevi_info;/* needs to move to globals.c */
-@@ -165,13 +166,20 @@ Status XeviGetVisualInfo(
- return BadAccess;
- }
- Xfree(temp_visual);
-- sz_info = rep.n_info * sizeof(ExtendedVisualInfo);
-- sz_xInfo = rep.n_info * sz_xExtendedVisualInfo;
-- sz_conflict = rep.n_conflicts * sizeof(VisualID);
-- sz_xConflict = rep.n_conflicts * sz_VisualID32;
-- infoPtr = *evi_return = (ExtendedVisualInfo *)Xmalloc(sz_info + sz_conflict);
-- xInfoPtr = temp_xInfo = (xExtendedVisualInfo *)Xmalloc(sz_xInfo);
-- xConflictPtr = temp_conflict = (VisualID32 *)Xmalloc(sz_xConflict);
-+ if ((rep.n_info < 65536) && (rep.n_conflicts < 65536)) {
-+ sz_info = rep.n_info * sizeof(ExtendedVisualInfo);
-+ sz_xInfo = rep.n_info * sz_xExtendedVisualInfo;
-+ sz_conflict = rep.n_conflicts * sizeof(VisualID);
-+ sz_xConflict = rep.n_conflicts * sz_VisualID32;
-+ *evi_return = Xmalloc(sz_info + sz_conflict);
-+ temp_xInfo = Xmalloc(sz_xInfo);
-+ temp_conflict = Xmalloc(sz_xConflict);
-+ } else {
-+ sz_xInfo = sz_xConflict = 0;
-+ *evi_return = NULL;
-+ temp_xInfo = NULL;
-+ temp_conflict = NULL;
-+ }
- if (!*evi_return || !temp_xInfo || !temp_conflict) {
- _XEatDataWords(dpy, rep.length);
- UnlockDisplay(dpy);
-@@ -188,6 +196,9 @@ Status XeviGetVisualInfo(
- _XRead(dpy, (char *)temp_conflict, sz_xConflict);
- UnlockDisplay(dpy);
- SyncHandle();
-+ infoPtr = *evi_return;
-+ xInfoPtr = temp_xInfo;
-+ xConflictPtr = temp_conflict;
- n_data = rep.n_info;
- conflict = (VisualID *)(infoPtr + n_data);
- while (n_data-- > 0) {
---
-1.8.2.3
-
diff --git a/main/libxext/0006-integer-overflow-in-XShapeGetRectangles-CVE-2013-198.patch b/main/libxext/0006-integer-overflow-in-XShapeGetRectangles-CVE-2013-198.patch
deleted file mode 100644
index 01f40d7b56..0000000000
--- a/main/libxext/0006-integer-overflow-in-XShapeGetRectangles-CVE-2013-198.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-From 6ecd96e8be3c33e2ffad6631cea4aa0a030d93c2 Mon Sep 17 00:00:00 2001
-From: Alan Coopersmith <alan.coopersmith@oracle.com>
-Date: Sat, 9 Mar 2013 14:40:33 -0800
-Subject: [PATCH 6/7] integer overflow in XShapeGetRectangles() [CVE-2013-1982
- 5/6]
-
-If the number of rectangles reported by the server is large enough that
-it overflows when multiplied by the size of the appropriate struct, then
-memory corruption can occur when more bytes are read from the X server
-than the size of the buffer we allocated to hold them.
-
-Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
-Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
----
- src/XShape.c | 24 ++++++++++++++----------
- 1 file changed, 14 insertions(+), 10 deletions(-)
-
-diff --git a/src/XShape.c b/src/XShape.c
-index 3987876..d025020 100644
---- a/src/XShape.c
-+++ b/src/XShape.c
-@@ -35,6 +35,7 @@ in this Software without prior written authorization from The Open Group.
- #include <X11/extensions/extutil.h>
- #include <X11/extensions/shape.h>
- #include <X11/extensions/shapeproto.h>
-+#include <limits.h>
- #include "eat.h"
-
- static XExtensionInfo _shape_info_data;
-@@ -443,7 +444,7 @@ XRectangle *XShapeGetRectangles (
- xShapeGetRectanglesReply rep;
- XRectangle *rects;
- xRectangle *xrects;
-- int i;
-+ unsigned int i;
-
- ShapeCheckExtension (dpy, info, (XRectangle *)NULL);
-
-@@ -461,20 +462,23 @@ XRectangle *XShapeGetRectangles (
- *count = rep.nrects;
- *ordering = rep.ordering;
- rects = NULL;
-- if (*count) {
-- xrects = (xRectangle *) Xmalloc (*count * sizeof (xRectangle));
-- rects = (XRectangle *) Xmalloc (*count * sizeof (XRectangle));
-+ if (rep.nrects) {
-+ if (rep.nrects < (INT_MAX / sizeof (XRectangle))) {
-+ xrects = Xmalloc (rep.nrects * sizeof (xRectangle));
-+ rects = Xmalloc (rep.nrects * sizeof (XRectangle));
-+ } else {
-+ xrects = NULL;
-+ rects = NULL;
-+ }
- if (!xrects || !rects) {
-- if (xrects)
-- Xfree (xrects);
-- if (rects)
-- Xfree (rects);
-+ Xfree (xrects);
-+ Xfree (rects);
- _XEatDataWords (dpy, rep.length);
- rects = NULL;
- *count = 0;
- } else {
-- _XRead (dpy, (char *) xrects, *count * sizeof (xRectangle));
-- for (i = 0; i < *count; i++) {
-+ _XRead (dpy, (char *) xrects, rep.nrects * sizeof (xRectangle));
-+ for (i = 0; i < rep.nrects; i++) {
- rects[i].x = (short) cvtINT16toInt (xrects[i].x);
- rects[i].y = (short) cvtINT16toInt (xrects[i].y);
- rects[i].width = xrects[i].width;
---
-1.8.2.3
-
diff --git a/main/libxext/0007-integer-overflow-in-XSyncListSystemCounters-CVE-2013.patch b/main/libxext/0007-integer-overflow-in-XSyncListSystemCounters-CVE-2013.patch
deleted file mode 100644
index 95382256d1..0000000000
--- a/main/libxext/0007-integer-overflow-in-XSyncListSystemCounters-CVE-2013.patch
+++ /dev/null
@@ -1,87 +0,0 @@
-From dfe6e1f3b8ede3d0bab7a5fa57f73513a09ec649 Mon Sep 17 00:00:00 2001
-From: Alan Coopersmith <alan.coopersmith@oracle.com>
-Date: Sat, 9 Mar 2013 14:40:33 -0800
-Subject: [PATCH 7/7] integer overflow in XSyncListSystemCounters()
- [CVE-2013-1982 6/6]
-
-If the number of counters or amount of data reported by the server is
-large enough that it overflows when multiplied by the size of the
-appropriate struct, then memory corruption can occur when more bytes
-are read from the X server than the size of the buffers we allocated
-to hold them.
-
-V2: Make sure we don't walk past the end of the reply when converting
-data from wire format to the structures returned to the caller.
-
-Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
-Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
----
- src/XSync.c | 32 +++++++++++++++++++++++++-------
- 1 file changed, 25 insertions(+), 7 deletions(-)
-
-diff --git a/src/XSync.c b/src/XSync.c
-index 3ca1308..ce4ab44 100644
---- a/src/XSync.c
-+++ b/src/XSync.c
-@@ -59,6 +59,7 @@ PERFORMANCE OF THIS SOFTWARE.
- #include <X11/extensions/extutil.h>
- #include <X11/extensions/sync.h>
- #include <X11/extensions/syncproto.h>
-+#include <limits.h>
- #include "eat.h"
-
- static XExtensionInfo _sync_info_data;
-@@ -352,19 +353,28 @@ XSyncListSystemCounters(Display *dpy, int *n_counters_return)
- if (rep.nCounters > 0)
- {
- xSyncSystemCounter *pWireSysCounter, *pNextWireSysCounter;
-+ xSyncSystemCounter *pLastWireSysCounter;
- XSyncCounter counter;
-- int replylen;
-+ unsigned int replylen;
- int i;
-
-- list = Xmalloc(rep.nCounters * sizeof(XSyncSystemCounter));
-- replylen = rep.length << 2;
-- pWireSysCounter = Xmalloc ((unsigned) replylen + sizeof(XSyncCounter));
-- /* +1 to leave room for last counter read-ahead */
-+ if (rep.nCounters < (INT_MAX / sizeof(XSyncSystemCounter)))
-+ list = Xmalloc(rep.nCounters * sizeof(XSyncSystemCounter));
-+ if (rep.length < (INT_MAX >> 2)) {
-+ replylen = rep.length << 2;
-+ pWireSysCounter = Xmalloc (replylen + sizeof(XSyncCounter));
-+ /* +1 to leave room for last counter read-ahead */
-+ pLastWireSysCounter = (xSyncSystemCounter *)
-+ ((char *)pWireSysCounter) + replylen;
-+ } else {
-+ replylen = 0;
-+ pWireSysCounter = NULL;
-+ }
-
- if ((!list) || (!pWireSysCounter))
- {
-- if (list) Xfree((char *) list);
-- if (pWireSysCounter) Xfree((char *) pWireSysCounter);
-+ Xfree(list);
-+ Xfree(pWireSysCounter);
- _XEatDataWords(dpy, rep.length);
- list = NULL;
- goto bail;
-@@ -388,6 +398,14 @@ XSyncListSystemCounters(Display *dpy, int *n_counters_return)
- pNextWireSysCounter = (xSyncSystemCounter *)
- (((char *)pWireSysCounter) + ((SIZEOF(xSyncSystemCounter) +
- pWireSysCounter->name_length + 3) & ~3));
-+ /* Make sure we haven't gone too far */
-+ if (pNextWireSysCounter > pLastWireSysCounter) {
-+ Xfree(list);
-+ Xfree(pWireSysCounter);
-+ list = NULL;
-+ goto bail;
-+ }
-+
- counter = pNextWireSysCounter->counter;
-
- list[i].name = ((char *)pWireSysCounter) +
---
-1.8.2.3
-
diff --git a/main/libxext/APKBUILD b/main/libxext/APKBUILD
index b5cbc1d92a..90c3921f33 100644
--- a/main/libxext/APKBUILD
+++ b/main/libxext/APKBUILD
@@ -1,24 +1,16 @@
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=libxext
-pkgver=1.3.1
-pkgrel=1
+pkgver=1.3.2
+pkgrel=0
pkgdesc="X11 miscellaneous extensions library"
url="http://xorg.freedesktop.org/"
arch="all"
license="custom"
depends=
depends_dev="xextproto libx11-dev libxau-dev"
-makedepends="$depends_dev xproto
- libtool autoconf automake util-macros"
+makedepends="$depends_dev xproto"
subpackages="$pkgname-dev $pkgname-doc"
source="http://xorg.freedesktop.org/releases/individual/lib/libXext-$pkgver.tar.bz2
- 0001-Use-_XEatDataWords-to-avoid-overflow-of-rep.length-b.patch
- 0002-integer-overflow-in-XcupGetReservedColormapEntries-C.patch
- 0003-integer-overflow-in-XcupStoreColors-CVE-2013-1982-2-.patch
- 0004-several-integer-overflows-in-XdbeGetVisualInfo-CVE-2.patch
- 0005-integer-overflow-in-XeviGetVisualInfo-CVE-2013-1982-.patch
- 0006-integer-overflow-in-XShapeGetRectangles-CVE-2013-198.patch
- 0007-integer-overflow-in-XSyncListSystemCounters-CVE-2013.patch
"
@@ -30,8 +22,6 @@ prepare() {
*.patch) msg $i; patch -p1 -i "$srcdir"/$i || return 1;;
esac
done
- libtoolize --force && aclocal && autoheader && autoconf \
- && automake --add-missing
}
build() {
@@ -45,27 +35,6 @@ package() {
make DESTDIR="$pkgdir" install || return 1
rm "$pkgdir"/usr/lib/*.la || return 1
}
-md5sums="71251a22bc47068d60a95f50ed2ec3cf libXext-1.3.1.tar.bz2
-e8571e1188293644413df6beb332c209 0001-Use-_XEatDataWords-to-avoid-overflow-of-rep.length-b.patch
-3ae33cae5c48fa8cfaa2669a2f474377 0002-integer-overflow-in-XcupGetReservedColormapEntries-C.patch
-be5437299e95d870d0c2555e994f9e99 0003-integer-overflow-in-XcupStoreColors-CVE-2013-1982-2-.patch
-f10d0d95cd02a31b42ebd9c71b098e00 0004-several-integer-overflows-in-XdbeGetVisualInfo-CVE-2.patch
-30d0d1e0d7e47444d767101c789129c6 0005-integer-overflow-in-XeviGetVisualInfo-CVE-2013-1982-.patch
-0684b2e3ac5875c1642a77ba6194ec81 0006-integer-overflow-in-XShapeGetRectangles-CVE-2013-198.patch
-1c60dbeb9032d3823616e7fcf1162c15 0007-integer-overflow-in-XSyncListSystemCounters-CVE-2013.patch"
-sha256sums="56229c617eb7bfd6dec40d2805bc4dfb883dfe80f130d99b9a2beb632165e859 libXext-1.3.1.tar.bz2
-a403c890692475a9e1a99c50bae893c150695a75f8ba7f415da2a165a54b1a14 0001-Use-_XEatDataWords-to-avoid-overflow-of-rep.length-b.patch
-46b3466a51fa040f39ae7e3fbf7d4d590dd6f3c246990cb5fb91eb40a547e156 0002-integer-overflow-in-XcupGetReservedColormapEntries-C.patch
-b1c4b9308e140458a1e010b874d68fdc646ebf9c16b8adf573bbe05ab3e266a1 0003-integer-overflow-in-XcupStoreColors-CVE-2013-1982-2-.patch
-1ddc2cd6d47b77247fc67831d81b33df287b9042bffec4fceeb1014ea08462be 0004-several-integer-overflows-in-XdbeGetVisualInfo-CVE-2.patch
-f25b13702696eb15bbcc903e6900a08f61ab39a9e79972ff1666dc32671082cb 0005-integer-overflow-in-XeviGetVisualInfo-CVE-2013-1982-.patch
-438dec8cc7e02d70318631b8c094a238a88a049eea8187a83f1b34cf859de333 0006-integer-overflow-in-XShapeGetRectangles-CVE-2013-198.patch
-660c78e986fc227845dea5aeef00d91e328a52e3268a852160fe4056d4c13c1f 0007-integer-overflow-in-XSyncListSystemCounters-CVE-2013.patch"
-sha512sums="e8536d5a93ae6718c459c013abef0660085b4014fa5db7614f847e75dc4ea87a6235593201c144c424c9f809c8f1275eeadd858fd8915ca34ea1713cf367110a libXext-1.3.1.tar.bz2
-3944b42305c7686e815bf11f996a48ed605f6f6cbac525e44dd42f0a6e1f9d7ed03b53bf0cc540fd0e1528128a1895ab8683f659d04670cf4c98fe784763ec50 0001-Use-_XEatDataWords-to-avoid-overflow-of-rep.length-b.patch
-10f5c15281aa9d5e6e18511243e020f3d943bd7421defc2c0e5c68cca36d2e0fdd55f1cc58955ba8f2e2ba5983c18ff6610d5b2b2e6a0877f23f446bf2a6c4ed 0002-integer-overflow-in-XcupGetReservedColormapEntries-C.patch
-dfc93f726ae0298c2b3ff43be24509904882de8d87e450e0292b32358211e961be72bca0d7af50afb955fa5ac4679598eb72526c9436d6f3fb0973b3ab6c2f08 0003-integer-overflow-in-XcupStoreColors-CVE-2013-1982-2-.patch
-26699071127642cf32763be2823fcf57e4bfa7766f60c432154e569f5fb91cf7bb8fb9bd9033190fec0c74cc62aad75f73418d48a7218fe37792ca0584a990e3 0004-several-integer-overflows-in-XdbeGetVisualInfo-CVE-2.patch
-6019357b85646c1c97426d03be5146a0af7a05e90af5fcee713cd2f5cd228b3634f896c76d66e174d55ea095f083b5afbb53ae4ea266979c9cdbb2813a4e5013 0005-integer-overflow-in-XeviGetVisualInfo-CVE-2013-1982-.patch
-4701c06782c7fb69b4eae19a7e6e1d88f8243fc3353f8be72d820bfa36761ad98ee0e5359e55c4e45a1fbf440cfd63e6d2732dd6d68564da3c707e85184e5a41 0006-integer-overflow-in-XShapeGetRectangles-CVE-2013-198.patch
-741a7716aa955c618b526f063919b7268e467f65d125a13dc72f4fd237550e2085e176f08375e8f01829341f9e967963d6d82f95bbc1cda80831c5c0691dbc91 0007-integer-overflow-in-XSyncListSystemCounters-CVE-2013.patch"
+md5sums="4376101e51bb2c6c44d9ab14344e85ad libXext-1.3.2.tar.bz2"
+sha256sums="f829075bc646cdc085fa25d98d5885d83b1759ceb355933127c257e8e50432e0 libXext-1.3.2.tar.bz2"
+sha512sums="5ed612f2c5e902648eb0438bfb8d9d6440a5baa19d95eb1253b51fe9ad8dcf903a7ee68a9455044d17ce0d486e421df0f98a069ab5ad1a49364f157bdf64efe7 libXext-1.3.2.tar.bz2"