diff options
-rw-r--r-- | x11/openmotif/Makefile | 6 | ||||
-rw-r--r-- | x11/openmotif/distinfo | 11 | ||||
-rw-r--r-- | x11/openmotif/patches/patch-ba | 30 | ||||
-rw-r--r-- | x11/openmotif/patches/patch-bb | 13 | ||||
-rw-r--r-- | x11/openmotif/patches/patch-bc | 36 | ||||
-rw-r--r-- | x11/openmotif/patches/patch-bd | 13 | ||||
-rw-r--r-- | x11/openmotif/patches/patch-be | 59 | ||||
-rw-r--r-- | x11/openmotif/patches/patch-bf | 13 | ||||
-rw-r--r-- | x11/openmotif/patches/patch-bg | 31 | ||||
-rw-r--r-- | x11/openmotif/patches/patch-bh | 170 | ||||
-rw-r--r-- | x11/openmotif/patches/patch-bi | 69 |
11 files changed, 446 insertions, 5 deletions
diff --git a/x11/openmotif/Makefile b/x11/openmotif/Makefile index 0ab827e9738..b0cde1ebc44 100644 --- a/x11/openmotif/Makefile +++ b/x11/openmotif/Makefile @@ -1,11 +1,9 @@ -# $NetBSD: Makefile,v 1.29 2004/12/03 15:15:12 wiz Exp $ -# FreeBSD: /c/ncvs/ports/x11-toolkits/open-motif/Makefile,v 1.18 2000/10/09 01:40:02 asami Exp -# OpenBSD: Makefile,v 1.5 2000/10/23 16:08:12 espie Exp +# $NetBSD: Makefile,v 1.30 2004/12/18 00:39:31 tron Exp $ PKGVER= 2.1.30 DISTNAME= openmotif${PKGVER} PKGNAME= openmotif-${PKGVER} -PKGREVISION= 2 +PKGREVISION= 3 CATEGORIES= x11 MOTIF_SITES= ftp://openmotif.opengroup.org/pub/openmotif/R${PKGVER}/ \ ftp://ftp.opengroup.org/pub/openmotif/R${PKGVER}/ \ diff --git a/x11/openmotif/distinfo b/x11/openmotif/distinfo index 3b2c563ee2c..130dada8107 100644 --- a/x11/openmotif/distinfo +++ b/x11/openmotif/distinfo @@ -1,4 +1,4 @@ -$NetBSD: distinfo,v 1.13 2004/08/31 03:10:16 danw Exp $ +$NetBSD: distinfo,v 1.14 2004/12/18 00:39:31 tron Exp $ SHA1 (openmotif/openmotif2.1.30.tar.gz) = 34fc82fdf0e200525864665e179246ef64082dcc Size (openmotif/openmotif2.1.30.tar.gz) = 17711487 bytes @@ -38,3 +38,12 @@ SHA1 (patch-aw) = 604a2b3d99dd62a34ca624a315d85d2e56450e4e SHA1 (patch-ax) = de1ee2594e39bec4cab599aa45d4b9d5af80fc7e SHA1 (patch-ay) = 38187926dcc27c510880e17ff2d6c35cd5e8393e SHA1 (patch-az) = 15f8d029940fc04be246ad7a479f14af6e38af03 +SHA1 (patch-ba) = c8a13cc06db7413ddb0abcc2b6e9781d4b9550ef +SHA1 (patch-bb) = 1d38da709ee1231323feb0e348be6dafd54d755d +SHA1 (patch-bc) = 87915f61d20e4defd6ac3a68667528515b6b88a0 +SHA1 (patch-bd) = 8f46473bb0380ce69b2eadc1c65322094d538bf8 +SHA1 (patch-be) = 35a24957def48a2f2771f34ebc53ecf83c827a66 +SHA1 (patch-bf) = 211d84bccf91ed474634658a75af5d8977b052d4 +SHA1 (patch-bg) = 582f455b066bd4f12160d719c885e9d8423632e5 +SHA1 (patch-bh) = 4025190b6200398b54cfa075da8976e96bf7c3ee +SHA1 (patch-bi) = b11a6493500c3d7dec379a2e73f42d7752f471ba diff --git a/x11/openmotif/patches/patch-ba b/x11/openmotif/patches/patch-ba new file mode 100644 index 00000000000..591f6fb63df --- /dev/null +++ b/x11/openmotif/patches/patch-ba @@ -0,0 +1,30 @@ +$NetBSD: patch-ba,v 1.1 2004/12/18 00:39:31 tron Exp $ + +--- lib/Xm/XpmAttrib.c.orig 2000-04-28 16:05:22.000000000 +0100 ++++ lib/Xm/XpmAttrib.c 2004-12-17 23:20:38.000000000 +0000 +@@ -36,7 +36,7 @@ + #include "XpmI.h" + + /* 3.2 backward compatibility code */ +-LFUNC(CreateOldColorTable, int, (XpmColor *ct, int ncolors, ++LFUNC(CreateOldColorTable, int, (XpmColor *ct, unsigned int ncolors, + XpmColor ***oldct)); + + LFUNC(FreeOldColorTable, void, (XpmColor **colorTable, int ncolors)); +@@ -47,12 +47,15 @@ + static int + CreateOldColorTable(ct, ncolors, oldct) + XpmColor *ct; +- int ncolors; ++ unsigned int ncolors; + XpmColor ***oldct; + { + XpmColor **colorTable, **color; + int a; + ++ if (ncolors >= SIZE_MAX / sizeof(XpmColor *)) ++ return XpmNoMemory; ++ + colorTable = (XpmColor **) XpmMalloc(ncolors * sizeof(XpmColor *)); + if (!colorTable) { + *oldct = NULL; diff --git a/x11/openmotif/patches/patch-bb b/x11/openmotif/patches/patch-bb new file mode 100644 index 00000000000..d47fa125c50 --- /dev/null +++ b/x11/openmotif/patches/patch-bb @@ -0,0 +1,13 @@ +$NetBSD: patch-bb,v 1.1 2004/12/18 00:39:31 tron Exp $ + +--- lib/Xm/XpmCrDatFrI.c.orig 2000-04-28 16:05:22.000000000 +0100 ++++ lib/Xm/XpmCrDatFrI.c 2004-12-17 23:20:38.000000000 +0000 +@@ -129,6 +129,8 @@ + */ + header_nlines = 1 + image->ncolors; + header_size = sizeof(char *) * header_nlines; ++ if (header_size >= SIZE_MAX / sizeof(char *)) ++ return (XpmNoMemory); + header = (char **) XpmCalloc(header_size, sizeof(char *)); + if (!header) + return (XpmNoMemory); diff --git a/x11/openmotif/patches/patch-bc b/x11/openmotif/patches/patch-bc new file mode 100644 index 00000000000..42b9935c849 --- /dev/null +++ b/x11/openmotif/patches/patch-bc @@ -0,0 +1,36 @@ +$NetBSD: patch-bc,v 1.1 2004/12/18 00:39:31 tron Exp $ + +--- lib/Xm/XpmI.h.orig 2004-12-17 23:17:51.000000000 +0000 ++++ lib/Xm/XpmI.h 2004-12-17 23:21:35.000000000 +0000 +@@ -179,6 +179,18 @@ + boundCheckingCalloc((long)(nelem),(long) (elsize)) + #endif + ++#if defined(SCO) || defined(__USLC__) ++#include <stdint.h> /* For SIZE_MAX */ ++#endif ++#include <limits.h> ++#ifndef SIZE_MAX ++# ifdef ULONG_MAX ++# define SIZE_MAX ULONG_MAX ++# else ++# define SIZE_MAX UINT_MAX ++# endif ++#endif ++ + #define XPMMAXCMTLEN BUFSIZ + typedef struct { + unsigned int type; +@@ -276,9 +288,9 @@ + } *xpmHashAtom; + + typedef struct { +- int size; +- int limit; +- int used; ++ unsigned int size; ++ unsigned int limit; ++ unsigned int used; + xpmHashAtom *atomTable; + } xpmHashTable; + diff --git a/x11/openmotif/patches/patch-bd b/x11/openmotif/patches/patch-bd new file mode 100644 index 00000000000..fb26e70bc6a --- /dev/null +++ b/x11/openmotif/patches/patch-bd @@ -0,0 +1,13 @@ +$NetBSD: patch-bd,v 1.1 2004/12/18 00:39:31 tron Exp $ + +--- lib/Xm/XpmWrFFrI.c.orig 2000-04-28 16:05:22.000000000 +0100 ++++ lib/Xm/XpmWrFFrI.c 2004-12-17 23:20:38.000000000 +0000 +@@ -239,6 +239,8 @@ + unsigned int x, y, h; + + h = height - 1; ++ if (cpp != 0 && width >= (SIZE_MAX - 3)/cpp) ++ return XpmNoMemory; + p = buf = (char *) XpmMalloc(width * cpp + 3); + if (!buf) + return (XpmNoMemory); diff --git a/x11/openmotif/patches/patch-be b/x11/openmotif/patches/patch-be new file mode 100644 index 00000000000..b6cba819284 --- /dev/null +++ b/x11/openmotif/patches/patch-be @@ -0,0 +1,59 @@ +$NetBSD: patch-be,v 1.1 2004/12/18 00:39:31 tron Exp $ + +--- lib/Xm/Xpmcreate.c.orig 2000-04-28 16:05:21.000000000 +0100 ++++ lib/Xm/Xpmcreate.c 2004-12-17 23:28:32.000000000 +0000 +@@ -1,4 +1,5 @@ + /* $XConsortium: Xpmcreate.c /main/8 1996/09/20 08:15:02 pascale $ */ ++/* $XdotOrg: pre-CVS proposed fix for CESA-2004-003 alanc 7/25/2004 $ */ + /* + * Copyright (C) 1989-95 GROUPE BULL + * +@@ -799,6 +800,9 @@ + + ErrorStatus = XpmSuccess; + ++ if (image->ncolors >= SIZE_MAX / sizeof(Pixel)) ++ return (XpmNoMemory); ++ + /* malloc pixels index tables */ + image_pixels = (Pixel *) XpmMalloc(sizeof(Pixel) * image->ncolors); + if (!image_pixels) +@@ -942,6 +946,8 @@ + return (XpmNoMemory); + + #ifndef FOR_MSW ++ if (height != 0 && (*image_return)->bytes_per_line >= SIZE_MAX / height) ++ return XpmNoMemory; + /* now that bytes_per_line must have been set properly alloc data */ + (*image_return)->data = + (char *) XpmMalloc((*image_return)->bytes_per_line * height); +@@ -1987,6 +1993,9 @@ + xpmGetCmt(data, &colors_cmt); + + /* malloc pixels index tables */ ++ if (ncolors >= SIZE_MAX / sizeof(Pixel)) ++ return XpmNoMemory; ++ + image_pixels = (Pixel *) XpmMalloc(sizeof(Pixel) * ncolors); + if (!image_pixels) + RETURN(XpmNoMemory); +@@ -2200,6 +2209,9 @@ + { + unsigned short colidx[256]; + ++ if (ncolors > 256) ++ return (XpmFileInvalid); ++ + bzero((char *)colidx, 256 * sizeof(short)); + for (a = 0; a < ncolors; a++) + colidx[(unsigned char)colorTable[a].string[0]] = a + 1; +@@ -2298,6 +2310,9 @@ + char *s; + char buf[BUFSIZ]; + ++ if (cpp >= sizeof(buf)) ++ return (XpmFileInvalid); ++ + buf[cpp] = '\0'; + if (USE_HASHTABLE) { + xpmHashAtom *slot; diff --git a/x11/openmotif/patches/patch-bf b/x11/openmotif/patches/patch-bf new file mode 100644 index 00000000000..77a8e424cfa --- /dev/null +++ b/x11/openmotif/patches/patch-bf @@ -0,0 +1,13 @@ +$NetBSD: patch-bf,v 1.1 2004/12/18 00:39:31 tron Exp $ + +--- lib/Xm/Xpmdata.c.orig 2000-04-28 16:05:21.000000000 +0100 ++++ lib/Xm/Xpmdata.c 2004-12-17 23:29:37.000000000 +0000 +@@ -371,7 +371,7 @@ + { + if (!mdata->type) + *cmt = NULL; +- else if (mdata->CommentLength) { ++ else if (mdata->CommentLength != 0 && mdata->CommentLength < SIZE_MAX - 1) { + *cmt = (char *) XpmMalloc(mdata->CommentLength + 1); + strncpy(*cmt, mdata->Comment, mdata->CommentLength); + (*cmt)[mdata->CommentLength] = '\0'; diff --git a/x11/openmotif/patches/patch-bg b/x11/openmotif/patches/patch-bg new file mode 100644 index 00000000000..820fd3e0c45 --- /dev/null +++ b/x11/openmotif/patches/patch-bg @@ -0,0 +1,31 @@ +$NetBSD: patch-bg,v 1.1 2004/12/18 00:39:31 tron Exp $ + +--- lib/Xm/Xpmhashtab.c.orig 2000-04-28 16:05:22.000000000 +0100 ++++ lib/Xm/Xpmhashtab.c 2004-12-17 23:21:35.000000000 +0000 +@@ -136,7 +136,7 @@ + xpmHashTable *table; + { + xpmHashAtom *atomTable = table->atomTable; +- int size = table->size; ++ unsigned int size = table->size; + xpmHashAtom *t, *p; + int i; + int oldSize = size; +@@ -145,6 +145,8 @@ + HASH_TABLE_GROWS + table->size = size; + table->limit = size / 3; ++ if (size >= SIZE_MAX / sizeof(*atomTable)) ++ return (XpmNoMemory); + atomTable = (xpmHashAtom *) XpmMalloc(size * sizeof(*atomTable)); + if (!atomTable) + return (XpmNoMemory); +@@ -205,6 +207,8 @@ + table->size = INITIAL_HASH_SIZE; + table->limit = table->size / 3; + table->used = 0; ++ if (table->size >= SIZE_MAX / sizeof(*atomTable)) ++ return (XpmNoMemory); + atomTable = (xpmHashAtom *) XpmMalloc(table->size * sizeof(*atomTable)); + if (!atomTable) + return (XpmNoMemory); diff --git a/x11/openmotif/patches/patch-bh b/x11/openmotif/patches/patch-bh new file mode 100644 index 00000000000..9e1a68f75e5 --- /dev/null +++ b/x11/openmotif/patches/patch-bh @@ -0,0 +1,170 @@ +$NetBSD: patch-bh,v 1.1 2004/12/18 00:39:31 tron Exp $ + +--- lib/Xm/Xpmparse.c.orig 2000-04-28 16:05:21.000000000 +0100 ++++ lib/Xm/Xpmparse.c 2004-12-18 00:31:35.000000000 +0000 +@@ -42,6 +42,15 @@ + #include "XpmI.h" + #include <ctype.h> + ++#define STRLCAT(dst, src, dstsize) { \ ++ if ((strlen(dst) + strlen(src)) < (dstsize)) \ ++ strcat(dst, src); \ ++ else return (XpmFileInvalid); } ++#define STRLCPY(dst, src, dstsize) { \ ++ if (strlen(src) < (dstsize)) \ ++ strcpy(dst, src); \ ++ else return (XpmFileInvalid); } ++ + LFUNC(ParsePixels, int, (xpmData *data, unsigned int width, + unsigned int height, unsigned int ncolors, + unsigned int cpp, XpmColor *colorTable, +@@ -209,7 +218,7 @@ + unsigned int *extensions; + { + unsigned int l; +- char buf[BUFSIZ]; ++ char buf[BUFSIZ+1]; + + if (!data->format) { /* XPM 2 or 3 */ + +@@ -318,10 +327,10 @@ + XpmColor **colorTablePtr; + xpmHashTable *hashtable; + { +- unsigned int key, l, a, b; ++ unsigned int key = 0, l, a, b, len; + unsigned int curkey; /* current color key */ + unsigned int lastwaskey; /* key read */ +- char buf[BUFSIZ]; ++ char buf[BUFSIZ+1]; + char curbuf[BUFSIZ]; /* current buffer */ + char **sptr, *s; + XpmColor *color; +@@ -329,6 +338,8 @@ + char **defaults; + int ErrorStatus; + ++ if (ncolors >= SIZE_MAX / sizeof(XpmColor)) ++ return (XpmNoMemory); + colorTable = (XpmColor *) XpmCalloc(ncolors, sizeof(XpmColor)); + if (!colorTable) + return (XpmNoMemory); +@@ -340,6 +351,10 @@ + /* + * read pixel value + */ ++ if (cpp >= SIZE_MAX - 1) { ++ xpmFreeColorTable(colorTable, ncolors); ++ return (XpmNoMemory); ++ } + color->string = (char *) XpmMalloc(cpp + 1); + if (!color->string) { + xpmFreeColorTable(colorTable, ncolors); +@@ -377,13 +392,14 @@ + } + if (!lastwaskey && key < NKEYS) { /* open new key */ + if (curkey) { /* flush string */ +- s = (char *) XpmMalloc(strlen(curbuf) + 1); ++ len = strlen(curbuf) + 1; ++ s = (char *) XpmMalloc(len); + if (!s) { + xpmFreeColorTable(colorTable, ncolors); + return (XpmNoMemory); + } + defaults[curkey] = s; +- strcpy(s, curbuf); ++ memcpy(s, curbuf, len); + } + curkey = key + 1; /* set new key */ + *curbuf = '\0'; /* reset curbuf */ +@@ -394,9 +410,9 @@ + return (XpmFileInvalid); + } + if (!lastwaskey) +- strcat(curbuf, " "); /* append space */ ++ STRLCAT(curbuf, " ", sizeof(curbuf)); /* append space */ + buf[l] = '\0'; +- strcat(curbuf, buf);/* append buf */ ++ STRLCAT(curbuf, buf, sizeof(curbuf));/* append buf */ + lastwaskey = 0; + } + } +@@ -404,12 +420,13 @@ + xpmFreeColorTable(colorTable, ncolors); + return (XpmFileInvalid); + } +- s = defaults[curkey] = (char *) XpmMalloc(strlen(curbuf) + 1); ++ len = strlen(curbuf) + 1; ++ s = defaults[curkey] = (char *) XpmMalloc(len); + if (!s) { + xpmFreeColorTable(colorTable, ncolors); + return (XpmNoMemory); + } +- strcpy(s, curbuf); ++ memcpy(s, curbuf, len); + } + } else { /* XPM 1 */ + /* get to the beginning of the first string */ +@@ -422,6 +439,10 @@ + /* + * read pixel value + */ ++ if (cpp >= SIZE_MAX - 1) { ++ xpmFreeColorTable(colorTable, ncolors); ++ return (XpmNoMemory); ++ } + color->string = (char *) XpmMalloc(cpp + 1); + if (!color->string) { + xpmFreeColorTable(colorTable, ncolors); +@@ -450,16 +471,17 @@ + *curbuf = '\0'; /* init curbuf */ + while (l = xpmNextWord(data, buf, BUFSIZ)) { + if (*curbuf != '\0') +- strcat(curbuf, " ");/* append space */ ++ STRLCAT(curbuf, " ", sizeof(curbuf));/* append space */ + buf[l] = '\0'; +- strcat(curbuf, buf); /* append buf */ ++ STRLCAT(curbuf, buf, sizeof(curbuf)); /* append buf */ + } +- s = (char *) XpmMalloc(strlen(curbuf) + 1); ++ len = strlen(curbuf) + 1; ++ s = (char *) XpmMalloc(len); + if (!s) { + xpmFreeColorTable(colorTable, ncolors); + return (XpmNoMemory); + } +- strcpy(s, curbuf); ++ memcpy(s, curbuf, len); + color->c_color = s; + *curbuf = '\0'; /* reset curbuf */ + if (a < ncolors - 1) +@@ -484,6 +506,9 @@ + unsigned int *iptr, *iptr2; + unsigned int a, x, y; + ++ if ((height > 0 && width >= SIZE_MAX / height) || ++ width * height >= SIZE_MAX / sizeof(unsigned int)) ++ return XpmNoMemory; + #ifndef FOR_MSW + iptr2 = (unsigned int *) XpmMalloc(sizeof(unsigned int) * width * height); + #else +@@ -507,6 +532,9 @@ + { + unsigned short colidx[256]; + ++ if (ncolors > 256) ++ return (XpmFileInvalid); ++ + bzero((char *)colidx, 256 * sizeof(short)); + for (a = 0; a < ncolors; a++) + colidx[(unsigned char)colorTable[a].string[0]] = a + 1; +@@ -584,6 +612,9 @@ + char *s; + char buf[BUFSIZ]; + ++ if (cpp >= sizeof(buf)) ++ return (XpmFileInvalid); ++ + buf[cpp] = '\0'; + if (USE_HASHTABLE) { + xpmHashAtom *slot; diff --git a/x11/openmotif/patches/patch-bi b/x11/openmotif/patches/patch-bi new file mode 100644 index 00000000000..2642d951fd4 --- /dev/null +++ b/x11/openmotif/patches/patch-bi @@ -0,0 +1,69 @@ +$NetBSD: patch-bi,v 1.1 2004/12/18 00:39:31 tron Exp $ + +--- lib/Xm/Xpmscan.c.orig 2000-04-28 16:05:21.000000000 +0100 ++++ lib/Xm/Xpmscan.c 2004-12-17 23:42:33.000000000 +0000 +@@ -93,7 +93,8 @@ + LFUNC(ScanTransparentColor, int, (XpmColor *color, unsigned int cpp, + XpmAttributes *attributes)); + +-LFUNC(ScanOtherColors, int, (Display *display, XpmColor *colors, int ncolors, ++LFUNC(ScanOtherColors, int, (Display *display, XpmColor *colors, ++ unsigned int ncolors, + Pixel *pixels, unsigned int mask, + unsigned int cpp, XpmAttributes *attributes)); + +@@ -220,11 +221,17 @@ + else + cpp = 0; + ++ if ((height > 0 && width >= SIZE_MAX / height) || ++ width * height >= SIZE_MAX / sizeof(unsigned int)) ++ RETURN(XpmNoMemory); + pmap.pixelindex = + (unsigned int *) XpmCalloc(width * height, sizeof(unsigned int)); + if (!pmap.pixelindex) + RETURN(XpmNoMemory); + ++ if (pmap.size >= SIZE_MAX / sizeof(Pixel)) ++ RETURN(XpmNoMemory); ++ + pmap.pixels = (Pixel *) XpmMalloc(sizeof(Pixel) * pmap.size); + if (!pmap.pixels) + RETURN(XpmNoMemory); +@@ -279,7 +286,8 @@ + * get rgb values and a string of char, and possibly a name for each + * color + */ +- ++ if (pmap.ncolors >= SIZE_MAX / sizeof(XpmColor)) ++ RETURN(XpmNoMemory); + colorTable = (XpmColor *) XpmCalloc(pmap.ncolors, sizeof(XpmColor)); + if (!colorTable) + RETURN(XpmNoMemory); +@@ -327,6 +335,8 @@ + + /* first get a character string */ + a = 0; ++ if (cpp >= SIZE_MAX - 1) ++ return (XpmNoMemory); + if (!(s = color->string = (char *) XpmMalloc(cpp + 1))) + return (XpmNoMemory); + *s++ = printable[c = a % MAXPRINTABLE]; +@@ -374,7 +384,7 @@ + ScanOtherColors(display, colors, ncolors, pixels, mask, cpp, attributes) + Display *display; + XpmColor *colors; +- int ncolors; ++ unsigned int ncolors; + Pixel *pixels; + unsigned int mask; + unsigned int cpp; +@@ -418,6 +428,8 @@ + } + + /* first get character strings and rgb values */ ++ if (ncolors >= SIZE_MAX / sizeof(XColor) || cpp >= SIZE_MAX - 1) ++ return (XpmNoMemory); + xcolors = (XColor *) XpmMalloc(sizeof(XColor) * ncolors); + if (!xcolors) + return (XpmNoMemory); |