diff options
author | Petteri Räty <betelgeuse@gentoo.org> | 2007-12-30 17:06:33 +0000 |
---|---|---|
committer | Petteri Räty <betelgeuse@gentoo.org> | 2007-12-30 17:06:33 +0000 |
commit | 48fcff68a509809cb4739d9e5bca7309a6b2017e (patch) | |
tree | 8b138bcfc245b90a7bc842cdd325ac9c02575bed /x11-libs/openmotif/files | |
parent | Remove RDEPEND on virtual/libc. (diff) | |
download | gentoo-2-48fcff68a509809cb4739d9e5bca7309a6b2017e.tar.gz gentoo-2-48fcff68a509809cb4739d9e5bca7309a6b2017e.tar.bz2 gentoo-2-48fcff68a509809cb4739d9e5bca7309a6b2017e.zip |
Clean files.
(Portage version: 2.1.4_rc11)
Diffstat (limited to 'x11-libs/openmotif/files')
11 files changed, 0 insertions, 3055 deletions
diff --git a/x11-libs/openmotif/files/openmotif-2.1.30-CAN-2004-0687-0688.patch b/x11-libs/openmotif/files/openmotif-2.1.30-CAN-2004-0687-0688.patch deleted file mode 100644 index effb24834126..000000000000 --- a/x11-libs/openmotif/files/openmotif-2.1.30-CAN-2004-0687-0688.patch +++ /dev/null @@ -1,421 +0,0 @@ ---- motif/lib/Xm/Xpmhashtab.c.CAN-2004-0687-0688 2000-04-28 17:05:22.000000000 +0200 -+++ motif/lib/Xm/Xpmhashtab.c 2004-10-05 13:37:32.477639974 +0200 -@@ -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); ---- motif/lib/Xm/XpmWrFFrI.c.CAN-2004-0687-0688 2000-04-28 17:05:22.000000000 +0200 -+++ motif/lib/Xm/XpmWrFFrI.c 2004-10-05 13:37:32.479639699 +0200 -@@ -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); ---- motif/lib/Xm/Xpmdata.c.CAN-2004-0687-0688 2000-04-28 17:05:21.000000000 +0200 -+++ motif/lib/Xm/Xpmdata.c 2004-10-05 13:37:32.481639425 +0200 -@@ -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'; ---- motif/lib/Xm/XpmI.h.CAN-2004-0687-0688 2004-10-05 13:37:32.253670716 +0200 -+++ motif/lib/Xm/XpmI.h 2004-10-05 13:37:32.483639150 +0200 -@@ -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; - ---- motif/lib/Xm/XpmCrDatFrI.c.CAN-2004-0687-0688 2000-04-28 17:05:22.000000000 +0200 -+++ motif/lib/Xm/XpmCrDatFrI.c 2004-10-05 13:37:32.485638876 +0200 -@@ -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); ---- motif/lib/Xm/Xpmscan.c.CAN-2004-0687-0688 2000-04-28 17:05:21.000000000 +0200 -+++ motif/lib/Xm/Xpmscan.c 2004-10-05 13:37:32.487638601 +0200 -@@ -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); -@@ -280,6 +287,8 @@ - * color - */ - -+ if (pmap.ncolors >= SIZE_MAX / sizeof(XpmColor)) -+ RETURN(XpmNoMemory); - colorTable = (XpmColor *) XpmCalloc(pmap.ncolors, sizeof(XpmColor)); - if (!colorTable) - RETURN(XpmNoMemory); -@@ -327,6 +336,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 +385,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 +429,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); ---- motif/lib/Xm/XpmAttrib.c.CAN-2004-0687-0688 2000-04-28 17:05:22.000000000 +0200 -+++ motif/lib/Xm/XpmAttrib.c 2004-10-05 13:37:32.489638327 +0200 -@@ -36,8 +36,8 @@ - #include "XpmI.h" - - /* 3.2 backward compatibility code */ --LFUNC(CreateOldColorTable, int, (XpmColor *ct, int ncolors, -- XpmColor ***oldct)); -+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; ---- motif/lib/Xm/Xpmcreate.c.CAN-2004-0687-0688 2000-04-28 17:05:21.000000000 +0200 -+++ motif/lib/Xm/Xpmcreate.c 2004-10-05 13:37:32.493637778 +0200 -@@ -799,6 +799,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 +945,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 +1992,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 +2208,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 +2309,9 @@ - char *s; - char buf[BUFSIZ]; - -+ if (cpp >= sizeof(buf)) -+ return (XpmFileInvalid); -+ - buf[cpp] = '\0'; - if (USE_HASHTABLE) { - xpmHashAtom *slot; ---- motif/lib/Xm/Xpmparse.c.CAN-2004-0687-0688 2000-04-28 17:05:21.000000000 +0200 -+++ motif/lib/Xm/Xpmparse.c 2004-10-05 13:37:32.495637503 +0200 -@@ -41,6 +41,25 @@ - - #include "XpmI.h" - #include <ctype.h> -+#include <string.h> -+ -+#ifdef HAS_STRLCAT -+# define STRLCAT(dst, src, dstsize) { \ -+ if (strlcat(dst, src, dstsize) >= (dstsize)) \ -+ return (XpmFileInvalid); } -+# define STRLCPY(dst, src, dstsize) { \ -+ if (strlcpy(dst, src, dstsize) >= (dstsize)) \ -+ return (XpmFileInvalid); } -+#else -+# 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); } -+#endif - - LFUNC(ParsePixels, int, (xpmData *data, unsigned int width, - unsigned int height, unsigned int ncolors, -@@ -209,7 +228,7 @@ - unsigned int *extensions; - { - unsigned int l; -- char buf[BUFSIZ]; -+ char buf[BUFSIZ + 1]; - - if (!data->format) { /* XPM 2 or 3 */ - -@@ -318,10 +337,10 @@ - XpmColor **colorTablePtr; - xpmHashTable *hashtable; - { -- unsigned int key, l, a, b; -+ unsigned int key, 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 +348,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 +361,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 +402,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 +420,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 +430,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 +449,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 +481,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 +516,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 +542,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 +622,9 @@ - char *s; - char buf[BUFSIZ]; - -+ if (cpp >= sizeof(buf)) -+ return (XpmFileInvalid); -+ - buf[cpp] = '\0'; - if (USE_HASHTABLE) { - xpmHashAtom *slot; diff --git a/x11-libs/openmotif/files/openmotif-2.1.30-CAN-2004-0914_sec8.patch b/x11-libs/openmotif/files/openmotif-2.1.30-CAN-2004-0914_sec8.patch deleted file mode 100644 index bf95bf1fd2ea..000000000000 --- a/x11-libs/openmotif/files/openmotif-2.1.30-CAN-2004-0914_sec8.patch +++ /dev/null @@ -1,14 +0,0 @@ ---- motif/lib/Xm/XpmWrFFrI.c.CAN-2004-0914_sec8 2004-11-29 14:56:12.848706139 +0100 -+++ motif/lib/Xm/XpmWrFFrI.c 2004-11-29 14:56:12.872702854 +0100 -@@ -317,10 +317,7 @@ - #ifndef NO_ZPIPE - size_t len = strlen(filename); - -- if(len == 0 || -- filename[0] == '/' || -- strstr(filename, "../") != NULL || -- filename[len-1] == '/') -+ if(len == 0) - return(XpmOpenFailed); - - if (len > 2 && !strcmp(".Z", filename + (len - 2))) { diff --git a/x11-libs/openmotif/files/openmotif-2.1.30-imake-ansi.patch b/x11-libs/openmotif/files/openmotif-2.1.30-imake-ansi.patch deleted file mode 100644 index dffee1f9e1c0..000000000000 --- a/x11-libs/openmotif/files/openmotif-2.1.30-imake-ansi.patch +++ /dev/null @@ -1,304 +0,0 @@ ---- motif/config/cf/Imake.cf 2000-06-03 22:49:34.000000000 +0000 -+++ motif/config/cf/Imake.cf.new 2004-01-19 01:10:14.000000000 +0000 -@@ -53,10 +70,19 @@ - # define MacroIncludeFile <bsdi.cf> - # define MacroFile bsdi.cf - # undef bsdi --# define BSD386Architecture --# define i386BsdArchitecture --# define i386Architecture --# undef i386 -+# define BSDOSArchitecture -+# if defined(__i386__) || defined(i386) -+# define i386BsdArchitecture -+# define i386Architecture -+# undef i386 -+# undef __i386__ -+# endif -+# if defined(__sparc__) || defined(__sparc_v9__) || defined(sparc) -+# define SparcArchitecture -+# undef sparc -+# undef __sparc__ -+# undef __sparc_v9__ -+# endif - #endif /* bsdi */ - - #ifdef __OpenBSD__ -@@ -114,6 +140,10 @@ - # endif - # undef mc68000 - # endif -+# ifdef __powerpc__ -+# define PpcArchitecture -+# undef __powerpc__ -+# endif - #endif /* OpenBSD */ - - #ifdef __NetBSD__ -@@ -141,13 +171,19 @@ - # endif - # ifdef mc68000 - # define Mc68020Architecture --# undef mc68000 - # endif --# if defined(arm32) || defined(__arm32__) -+# ifdef __arm32__ - # define Arm32Architecture --# undef arm32 - # undef __arm32__ - # endif -+# ifdef __vax__ -+# define VaxArchitecture -+# undef __vax__ -+# endif -+# ifdef __powerpc__ -+# define PpcArchitecture -+# undef __powerpc__ -+# endif - #endif /* NetBSD */ - - #ifdef __FreeBSD__ -@@ -160,6 +196,11 @@ - # define i386Architecture - # undef i386 - # endif -+# ifdef __alpha__ -+# define AlphaBsdArchitecture -+# define AlphaArchitecture -+# undef __alpha__ -+# endif - #endif /* __FreeBSD__ */ - - #ifdef AMOEBA -@@ -325,6 +366,7 @@ - # undef sgi - # define SGIArchitecture - # undef mips -+# undef __mips - # define MipsArchitecture - # ifdef _SVR4 - # undef _SVR4 -@@ -553,44 +595,158 @@ - # undef linux - # define LinuxArchitecture - # ifdef i386 --# define i386Architecture -+# ifndef i386Architecture -+# define i386Architecture -+# endif - # undef i386 --# endif /* i386 */ -+XCOMM Keep cpp from replacing path elements containing i486/i586/i686 -+# ifdef i486 -+# ifndef i386Architecture -+# define i386Architecture -+# endif -+# undef i486 -+# endif -+# ifdef i586 -+# ifndef i386Architecture -+# define i386Architecture -+# endif -+# undef i586 -+# endif -+# ifdef i686 -+# ifndef i386Architecture -+# define i386Architecture -+# endif -+# undef i686 -+# endif -+# ifdef k6 -+# ifndef i386Architecture -+# define i386Architecture -+# endif -+# undef k6 -+# endif -+# endif /* k6 */ - # ifdef __i386__ - # ifndef i386Architecture - # define i386Architecture - # endif - # undef __i386__ - # endif /* __i386__ */ -+# ifdef __i486__ -+# ifndef i386Architecture -+# define i386Architecture -+# endif -+# undef __i486__ -+# endif /* __i486__ */ -+# ifdef __i586__ -+# ifndef i386Architecture -+# define i386Architecture -+# endif -+# undef __i586__ -+# endif /* __i586__ */ -+# ifdef __i686__ -+# ifndef i386Architecture -+# define i386Architecture -+# endif -+# undef __i686__ -+# endif /* __i686__ */ -+# ifdef __k6__ -+# ifndef i386Architecture -+# define i386Architecture -+# endif -+# undef __k6__ -+# endif /* __k6__ */ -+# ifdef __i386 -+# ifndef i386Architecture -+# define i386Architecture -+# endif -+# undef __i386 -+# endif /* __i386 */ -+# ifdef __i486 -+# ifndef i386Architecture -+# define i386Architecture -+# endif -+# undef __i486 -+# endif /* __i486 */ -+# ifdef __i586 -+# ifndef i386Architecture -+# define i386Architecture -+# endif -+# undef __i586 -+# endif /* __i586 */ -+# ifdef __i686 -+# ifndef i386Architecture -+# define i386Architecture -+# endif -+# undef __i686 -+# endif /* __i686 */ -+# ifdef __k6 -+# ifndef i386Architecture -+# define i386Architecture -+# endif -+# undef __k6 -+# endif /* __k6 */ -+# ifdef __s390__ -+# define s390Architecture -+# undef __s390__ -+# endif /* s390 */ - # ifdef __alpha - # define AlphaArchitecture - # undef __alpha - # endif /* __alpha */ - # ifdef __alpha__ --# define AlphaArchitecture -+# ifndef AlphaArchitecture -+# define AlphaArchitecture -+# endif - # undef __alpha__ - # endif /* __alpha__ */ -+# ifdef __arm__ -+# define Arm32Architecture -+# undef arm -+# undef __arm -+# undef __arm__ -+# endif - # ifdef mc68000 - # define Mc68020Architecture - # undef mc68000 - # endif /* mc68000 */ - # ifdef powerpc --# define PowerPCArchitecture -+# define PpcArchitecture - # undef powerpc - # endif --# if defined(arm) || defined(__arm__) --# define ArmArchitecture --# undef arm --# undef __arm__ --# if defined(__ARM_ARCH_4__) --# define Arm4Architecture --# define Arm32Architecture --# undef __ARM_ARCH_4__ --# endif --# if defined(__ARM_ARCH_3__) --# define Arm3Architecture --# undef __ARM_ARCH_3__ --# endif -+# ifdef __powerpc__ -+# ifndef PpcArchitecture -+# define PpcArchitecture -+# endif -+# undef __powerpc__ -+# endif -+# ifdef sparc -+# define SparcArchitecture -+# undef sparc -+# endif -+# ifdef __sparc__ -+# ifndef SparcArchitecture -+# define SparcArchitecture -+# endif -+# undef __sparc__ -+# endif -+# ifdef ia64 -+# define ia64Architecture -+# undef ia64 -+# endif -+# ifdef __ia64__ -+# ifndef ia64Architecture -+# define ia64Architecture -+# endif -+# undef __ia64__ -+# endif -+# if defined(mips) || defined(__mips__) -+# define MipsArchitecture -+# undef mips -+# undef __mips__ -+# endif -+XCOMM for compatibility with 3.3.x -+# ifdef PpcArchitecture -+# define PowerPCArchitecture - # endif - #endif /* linux */ - -@@ -608,7 +764,7 @@ - # undef __x86__ - # endif - # ifdef __powerpc__ --# define ppcArchitecture -+# define PpcArchitecture - # undef __powerpc__ - # endif - # if defined(sparc) || defined(__sparc__) -@@ -616,6 +772,10 @@ - # undef sparc - # undef __sparc__ - # endif -+/* for compatibility with 3.3.x */ -+# ifdef PpcArchitecture -+# define PowerPCArchitecture -+# endif - #endif /* LynxOS AT/PPC/microSPARC */ - - #ifdef __uxp__ -@@ -687,6 +847,14 @@ - #undef i386 - #endif /* MACH */ - -+/* On NetBSD, `unix' is not defined, and cpp emits a warning every time -+ * it sees a test using the `unix' symbol */ -+#if !defined(NetBSDArchitecture) || (defined(NetBSDArchitecture) && DefaultOSMajorVersion == 1 && DefaultOSMinorVersion <= 3) -+#ifdef unix -+#undef unix -+#endif -+#endif -+ - #ifdef emxos2 - #define MacroIncludeFile <os2.cf> - #define MacroFile os2.cf -@@ -721,6 +889,12 @@ - #endif - #endif /* QNX/Neutrino */ - -+#ifdef SparcArchitecture -+# if defined(__sparc_v9) || defined(__arch64__) -+# define Sparc64Architecture -+# endif -+#endif -+ - #ifndef MacroIncludeFile - XCOMM WARNING: Imake.cf not configured; guessing at definitions!!! - XCOMM This might mean that BOOTSTRAPCFLAGS was not set when building imake. diff --git a/x11-libs/openmotif/files/openmotif-2.1.30-imake-tmpdir.patch b/x11-libs/openmotif/files/openmotif-2.1.30-imake-tmpdir.patch deleted file mode 100644 index b1b2804ab394..000000000000 --- a/x11-libs/openmotif/files/openmotif-2.1.30-imake-tmpdir.patch +++ /dev/null @@ -1,43 +0,0 @@ ---- config/imake/imake.c~ 2000-06-04 00:34:05.000000000 +0200 -+++ config/imake/imake.c 2003-09-17 03:41:46.000000000 +0200 -@@ -961,23 +961,38 @@ - static void get_libc_version(inFile) - FILE* inFile; - { -- char *aout = tmpnam (NULL); -+ char aout[PATH_MAX]; - FILE *fp; - const char *format = "%s -o %s -x c -"; - char *cc; - int len; - char *command; -+ char *tmpdir; -+ int tmpfd; -+ -+ if((tmpdir = getenv("TMPDIR")) != NULL && strlen(tmpdir) < (PATH_MAX-13)) -+ strcpy(aout, tmpdir); -+ else -+ strcpy(aout, "/tmp"); -+ strcat(aout, "/imakeXXXXXX"); -+ -+ if((tmpfd = mkstemp(aout)) == -1) { -+ perror("mkstemp"); -+ abort(); -+ } - - cc = getenv ("CC"); - if (cc == NULL) - cc = "gcc"; - len = strlen (aout) + strlen (format) + strlen (cc); - if (len < 128) len = 128; -- command = alloca (len); -+ if((command = alloca (len)) == NULL) -+ abort(); - - if (snprintf (command , len, format, cc, aout) == len) - abort (); - -+ close(tmpfd); - fp = popen (command, "w"); - if (fp == NULL || fprintf (fp, "%s\n", libc_c) < 0 - || pclose (fp) != 0) diff --git a/x11-libs/openmotif/files/openmotif-2.1.30-uil-bad_grammar_fix.diff b/x11-libs/openmotif/files/openmotif-2.1.30-uil-bad_grammar_fix.diff deleted file mode 100644 index 19568a8c9cc0..000000000000 --- a/x11-libs/openmotif/files/openmotif-2.1.30-uil-bad_grammar_fix.diff +++ /dev/null @@ -1,35 +0,0 @@ ---- motif/tools/wml/Uil.y.orig Wed May 10 16:02:41 2000 -+++ motif/tools/wml/Uil.y Fri Feb 6 14:45:08 2004 -@@ -397,7 +397,7 @@ - | FONTSET { $$ = $1; $$.b_type = sym_k_fontset_value; } - | WIDGET { $$ = $1; $$.b_type = sym_k_widget_ref_value; } - /* End for fixing CR 5888 */ -- -+ ; - string_table_type - : STRING_TABLE - | COMPOUND_STRING_TABLE -@@ -1049,7 +1049,7 @@ - sar_private_error( &$$ ); - } - } -- ; -+ - | value { $$ = $1; - if ($$.b_type != sym_k_error_value) - { -@@ -1058,12 +1058,12 @@ - sar_private_error( &$$ ); - } - } -- -+ ; - non_export_value - : COLOR_TABLE LEFT_PAREN color_list RIGHT_PAREN { sar_make_color_table( &$$, &$3, &$1); } - - /* END HaL fix CR 5427 */ -- -+ ; - - value - : value_1 diff --git a/x11-libs/openmotif/files/openmotif-2.1.30-xpm.diff b/x11-libs/openmotif/files/openmotif-2.1.30-xpm.diff deleted file mode 100644 index c38acd698fd4..000000000000 --- a/x11-libs/openmotif/files/openmotif-2.1.30-xpm.diff +++ /dev/null @@ -1,440 +0,0 @@ ---- motif/lib/Xm/Xpmscan.c.XPM 2000-05-10 16:02:01.000000000 +0200 -+++ motif/lib/Xm/Xpmscan.c 2005-01-17 14:51:37.000000000 +0100 -@@ -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); ---- motif/lib/Xm/XpmWrFFrI.c.XPM 2000-05-10 16:02:01.000000000 +0200 -+++ motif/lib/Xm/XpmWrFFrI.c 2005-01-17 14:51:37.000000000 +0100 -@@ -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); ---- motif/lib/Xm/Xpmhashtab.c.XPM 2000-05-10 16:02:01.000000000 +0200 -+++ motif/lib/Xm/Xpmhashtab.c 2005-01-17 14:51:37.000000000 +0100 -@@ -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); ---- motif/lib/Xm/XpmCrDatFrI.c.XPM 2000-05-10 16:02:01.000000000 +0200 -+++ motif/lib/Xm/XpmCrDatFrI.c 2005-01-17 14:51:37.000000000 +0100 -@@ -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); ---- motif/lib/Xm/XpmI.h.XPM 2000-06-04 21:47:23.000000000 +0200 -+++ motif/lib/Xm/XpmI.h 2005-01-17 14:51:37.000000000 +0100 -@@ -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; - ---- motif/lib/Xm/Xpmcreate.c.XPM 2000-05-10 16:02:01.000000000 +0200 -+++ motif/lib/Xm/Xpmcreate.c 2005-01-17 14:51:37.000000000 +0100 -@@ -799,6 +799,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 +945,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 +1992,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 +2208,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; -@@ -2242,6 +2253,9 @@ - unsigned short *cidx[256]; - int char1; - -+ if (ncolors > 256) -+ return (XpmFileInvalid); -+ - bzero((char *)cidx, 256 * sizeof(unsigned short *)); /* init */ - for (a = 0; a < ncolors; a++) { - char1 = colorTable[a].string[0]; -@@ -2298,6 +2312,9 @@ - char *s; - char buf[BUFSIZ]; - -+ if (cpp >= sizeof(buf)) -+ return (XpmFileInvalid); -+ - buf[cpp] = '\0'; - if (USE_HASHTABLE) { - xpmHashAtom *slot; ---- motif/lib/Xm/XpmAttrib.c.XPM 2000-05-10 16:02:01.000000000 +0200 -+++ motif/lib/Xm/XpmAttrib.c 2005-01-17 14:51:37.000000000 +0100 -@@ -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; ---- motif/lib/Xm/Imakefile.XPM 2000-06-02 17:55:19.000000000 +0200 -+++ motif/lib/Xm/Imakefile 2005-01-17 14:51:37.000000000 +0100 -@@ -72,7 +72,7 @@ - - LINTLIBS = $(LINTXLIB) $(LINTXTOOL) - -- DEFINES = XmDefines StrcasecmpDefines -+ DEFINES = XmDefines StrcasecmpDefines $(STRLCATDEF) - SRCH_DEFINES = -DLIBDIR=\"$(XPROJECTROOT)/lib/X11\" -DINCDIR=\"$(XPROJECTROOT)/include/X11\" - BINDINGS_DEF = -DXMBINDDIR_FALLBACK=\"VirtualBindingsPath\" - STRINGSABIOPTIONS = ToolkitStringsABIOptions -@@ -258,6 +258,10 @@ - UNSHAREDOBJS = XmStrDefs.o sharedlib.o - #endif - -+#if HasStrlcat -+STRLCATDEF = -DHAS_STRLCAT -+#endif -+ - #define LibTookitMakeStringsDependency YES - #include <Library.tmpl> - ---- motif/lib/Xm/Xpmparse.c.XPM 2000-05-10 16:02:01.000000000 +0200 -+++ motif/lib/Xm/Xpmparse.c 2005-01-17 14:51:37.000000000 +0100 -@@ -42,6 +42,24 @@ - #include "XpmI.h" - #include <ctype.h> - -+#ifdef HAS_STRLCAT -+# define STRLCAT(dst, src, dstsize) { \ -+ if (strlcat(dst, src, dstsize) >= (dstsize)) \ -+ return (XpmFileInvalid); } -+# define STRLCPY(dst, src, dstsize) { \ -+ if (strlcpy(dst, src, dstsize) >= (dstsize)) \ -+ return (XpmFileInvalid); } -+#else -+# 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); } -+#endif -+ - LFUNC(ParsePixels, int, (xpmData *data, unsigned int width, - unsigned int height, unsigned int ncolors, - unsigned int cpp, XpmColor *colorTable, -@@ -209,7 +227,7 @@ - unsigned int *extensions; - { - unsigned int l; -- char buf[BUFSIZ]; -+ char buf[BUFSIZ + 1]; - - if (!data->format) { /* XPM 2 or 3 */ - -@@ -318,10 +336,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 +347,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 +360,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 +401,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 +419,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 +429,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 +448,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 +480,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 +515,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 +541,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 +621,9 @@ - char *s; - char buf[BUFSIZ]; - -+ if (cpp >= sizeof(buf)) -+ return (XpmFileInvalid); -+ - buf[cpp] = '\0'; - if (USE_HASHTABLE) { - xpmHashAtom *slot; diff --git a/x11-libs/openmotif/files/openmotif-2.1.30-xpm2.diff b/x11-libs/openmotif/files/openmotif-2.1.30-xpm2.diff deleted file mode 100644 index 1876ad76f126..000000000000 --- a/x11-libs/openmotif/files/openmotif-2.1.30-xpm2.diff +++ /dev/null @@ -1,1601 +0,0 @@ -diff -r -u motif.0194/lib/Xm/Imakefile motif/lib/Xm/Imakefile ---- motif.0194/lib/Xm/Imakefile 2005-01-18 15:34:38.000000000 +0100 -+++ motif/lib/Xm/Imakefile 2005-01-18 19:34:41.789393240 +0100 -@@ -169,7 +169,7 @@ - XpmCrBufFrP.c XpmCrPFrBuf.c XpmRdFToDat.c XpmWrFFrP.c Xpmrgb.c \ - XpmCrDatFrI.c XpmCrPFrDat.c XpmRdFToI.c Xpmcreate.c Xpmscan.c \ - XpmCrDatFrP.c XpmCrPFrI.c XpmRdFToP.c Xpmdata.c \ -- XpmCrIFrBuf.c XpmImage.c XpmWrFFrBuf.c Xpmhashtab.c -+ XpmCrIFrBuf.c XpmImage.c XpmWrFFrBuf.c Xpmhashtab.c s_popen.c - - #if UseLocalRegex - REGEX_SRCS = regexp.c -@@ -232,7 +232,7 @@ - XpmCrBufFrP.o XpmCrPFrBuf.o XpmRdFToDat.o XpmWrFFrP.o Xpmrgb.o \ - XpmCrDatFrI.o XpmCrPFrDat.o XpmRdFToI.o Xpmcreate.o Xpmscan.o \ - XpmCrDatFrP.o XpmCrPFrI.o XpmRdFToP.o Xpmdata.o \ -- XpmCrIFrBuf.o XpmImage.o XpmWrFFrBuf.o Xpmhashtab.o -+ XpmCrIFrBuf.o XpmImage.o XpmWrFFrBuf.o Xpmhashtab.o s_popen.o - - #if UseLocalRegex - REGEX_OBJS = regexp.o -diff -r -u motif.0194/lib/Xm/XpmAttrib.c motif/lib/Xm/XpmAttrib.c ---- motif.0194/lib/Xm/XpmAttrib.c 2005-01-18 15:34:38.000000000 +0100 -+++ motif/lib/Xm/XpmAttrib.c 2005-01-18 19:26:30.705049408 +0100 -@@ -33,13 +33,15 @@ - * Developed by Arnaud Le Hors * - \*****************************************************************************/ - -+/* October 2004, source code review by Thomas Biege <thomas@suse.de> */ -+ - #include "XpmI.h" - - /* 3.2 backward compatibility code */ - LFUNC(CreateOldColorTable, int, (XpmColor *ct, unsigned int ncolors, - XpmColor ***oldct)); - --LFUNC(FreeOldColorTable, void, (XpmColor **colorTable, int ncolors)); -+LFUNC(FreeOldColorTable, void, (XpmColor **colorTable, unsigned int ncolors)); - - /* - * Create a colortable compatible with the old style colortable -@@ -51,9 +53,9 @@ - XpmColor ***oldct; - { - XpmColor **colorTable, **color; -- int a; -+ unsigned int a; - -- if (ncolors >= SIZE_MAX / sizeof(XpmColor *)) -+ if (ncolors >= UINT_MAX / sizeof(XpmColor *)) - return XpmNoMemory; - - colorTable = (XpmColor **) XpmMalloc(ncolors * sizeof(XpmColor *)); -@@ -70,9 +72,9 @@ - static void - FreeOldColorTable(colorTable, ncolors) - XpmColor **colorTable; -- int ncolors; -+ unsigned int ncolors; - { -- int a, b; -+ unsigned int a, b; - XpmColor **color; - char **sptr; - -@@ -123,7 +125,7 @@ - XpmExtension *ext; - char **sptr; - -- if (extensions) { -+ if (extensions && nextensions > 0) { - for (i = 0, ext = extensions; i < nextensions; i++, ext++) { - if (ext->name) - XpmFree(ext->name); -diff -r -u motif.0194/lib/Xm/XpmCrBufFrI.c motif/lib/Xm/XpmCrBufFrI.c ---- motif.0194/lib/Xm/XpmCrBufFrI.c 2000-05-10 16:02:01.000000000 +0200 -+++ motif/lib/Xm/XpmCrBufFrI.c 2005-01-18 19:26:30.706049256 +0100 -@@ -42,15 +42,17 @@ - unsigned int *used_size, XpmColor *colors, - unsigned int ncolors, unsigned int cpp)); - --LFUNC(WritePixels, void, (char *dataptr, unsigned int *used_size, -+LFUNC(WritePixels, void, (char *dataptr, unsigned int data_size, -+ unsigned int *used_size, - unsigned int width, unsigned int height, - unsigned int cpp, unsigned int *pixels, - XpmColor *colors)); - --LFUNC(WriteExtensions, void, (char *dataptr, unsigned int *used_size, -+LFUNC(WriteExtensions, void, (char *dataptr, unsigned int data_size, -+ unsigned int *used_size, - XpmExtension *ext, unsigned int num)); - --LFUNC(ExtensionsSize, int, (XpmExtension *ext, unsigned int num)); -+LFUNC(ExtensionsSize, unsigned int, (XpmExtension *ext, unsigned int num)); - LFUNC(CommentsSize, int, (XpmInfo *info)); - - int -@@ -93,11 +95,11 @@ - - #undef RETURN - #define RETURN(status) \ --{ \ -+do { \ - if (ptr) \ - XpmFree(ptr); \ - return(status); \ --} -+} while(0) - - int - XpmCreateBufferFromXpmImage(buffer_return, image, info) -@@ -111,7 +113,7 @@ - unsigned int cmts, extensions, ext_size = 0; - unsigned int l, cmt_size = 0; - char *ptr = NULL, *p; -- unsigned int ptr_size, used_size; -+ unsigned int ptr_size, used_size, tmp; - - *buffer_return = NULL; - -@@ -133,7 +135,13 @@ - #ifdef VOID_SPRINTF - used_size = strlen(buf); - #endif -- ptr_size = used_size + ext_size + cmt_size + 1; -+ ptr_size = used_size + ext_size + cmt_size + 1; /* ptr_size can't be 0 */ -+ if(ptr_size <= used_size || -+ ptr_size <= ext_size || -+ ptr_size <= cmt_size) -+ { -+ return XpmNoMemory; -+ } - ptr = (char *) XpmMalloc(ptr_size); - if (!ptr) - return XpmNoMemory; -@@ -144,7 +152,7 @@ - #ifndef VOID_SPRINTF - used_size += - #endif -- sprintf(ptr + used_size, "/*%s*/\n", info->hints_cmt); -+ snprintf(ptr + used_size, ptr_size-used_size, "/*%s*/\n", info->hints_cmt); - #ifdef VOID_SPRINTF - used_size += strlen(info->hints_cmt) + 5; - #endif -@@ -162,7 +170,7 @@ - #ifndef VOID_SPRINTF - l += - #endif -- sprintf(buf + l, " %d %d", info->x_hotspot, info->y_hotspot); -+ snprintf(buf + l, sizeof(buf)-l, " %d %d", info->x_hotspot, info->y_hotspot); - #ifdef VOID_SPRINTF - l = strlen(buf); - #endif -@@ -184,6 +192,8 @@ - l = strlen(buf); - #endif - ptr_size += l; -+ if(ptr_size <= l) -+ RETURN(XpmNoMemory); - p = (char *) XpmRealloc(ptr, ptr_size); - if (!p) - RETURN(XpmNoMemory); -@@ -196,7 +206,7 @@ - #ifndef VOID_SPRINTF - used_size += - #endif -- sprintf(ptr + used_size, "/*%s*/\n", info->colors_cmt); -+ snprintf(ptr + used_size, ptr_size-used_size, "/*%s*/\n", info->colors_cmt); - #ifdef VOID_SPRINTF - used_size += strlen(info->colors_cmt) + 5; - #endif -@@ -212,7 +222,12 @@ - * 4 = 1 (for '"') + 3 (for '",\n') - * 1 = - 2 (because the last line does not end with ',\n') + 3 (for '};\n') - */ -- ptr_size += image->height * (image->width * image->cpp + 4) + 1; -+ if(image->width > UINT_MAX / image->cpp || -+ (tmp = image->width * image->cpp + 4) <= 4 || -+ image->height > UINT_MAX / tmp || -+ (tmp = image->height * tmp + 1) <= 1 || -+ (ptr_size += tmp) <= tmp) -+ RETURN(XpmNoMemory); - - p = (char *) XpmRealloc(ptr, ptr_size); - if (!p) -@@ -224,17 +239,17 @@ - #ifndef VOID_SPRINTF - used_size += - #endif -- sprintf(ptr + used_size, "/*%s*/\n", info->pixels_cmt); -+ snprintf(ptr + used_size, ptr_size-used_size, "/*%s*/\n", info->pixels_cmt); - #ifdef VOID_SPRINTF - used_size += strlen(info->pixels_cmt) + 5; - #endif - } -- WritePixels(ptr + used_size, &used_size, image->width, image->height, -+ WritePixels(ptr + used_size, ptr_size - used_size, &used_size, image->width, image->height, - image->cpp, image->data, image->colorTable); - - /* print extensions */ - if (extensions) -- WriteExtensions(ptr + used_size, &used_size, -+ WriteExtensions(ptr + used_size, ptr_size-used_size, &used_size, - info->extensions, info->nextensions); - - /* close the array */ -@@ -245,6 +260,7 @@ - return (XpmSuccess); - } - -+ - static int - WriteColors(dataptr, data_size, used_size, colors, ncolors, cpp) - char **dataptr; -@@ -254,7 +270,7 @@ - unsigned int ncolors; - unsigned int cpp; - { -- char buf[BUFSIZ]; -+ char buf[BUFSIZ] = {0}; - unsigned int a, key, l; - char *s, *s2; - char **defaults; -@@ -264,6 +280,8 @@ - - defaults = (char **) colors; - s = buf + 1; -+ if(cpp > (sizeof(buf) - (s-buf))) -+ return(XpmNoMemory); - strncpy(s, *defaults++, cpp); - s += cpp; - -@@ -272,14 +290,24 @@ - #ifndef VOID_SPRINTF - s += - #endif -- sprintf(s, "\t%s %s", xpmColorKeys[key - 1], s2); -+ /* assume C99 compliance */ -+ snprintf(s, sizeof(buf) - (s-buf), "\t%s %s", xpmColorKeys[key - 1], s2); - #ifdef VOID_SPRINTF - s += strlen(s); - #endif -+ /* now let's check if s points out-of-bounds */ -+ if((s-buf) > sizeof(buf)) -+ return(XpmNoMemory); - } - } -+ if(sizeof(buf) - (s-buf) < 4) -+ return(XpmNoMemory); - strcpy(s, "\",\n"); - l = s + 3 - buf; -+ if( *data_size >= UINT_MAX-l || -+ *data_size + l <= *used_size || -+ (*data_size + l - *used_size) <= sizeof(buf)) -+ return(XpmNoMemory); - s = (char *) XpmRealloc(*dataptr, *data_size + l); - if (!s) - return (XpmNoMemory); -@@ -292,8 +320,9 @@ - } - - static void --WritePixels(dataptr, used_size, width, height, cpp, pixels, colors) -+WritePixels(dataptr, data_size, used_size, width, height, cpp, pixels, colors) - char *dataptr; -+ unsigned int data_size; - unsigned int *used_size; - unsigned int width; - unsigned int height; -@@ -304,27 +333,36 @@ - char *s = dataptr; - unsigned int x, y, h; - -+ if(height <= 1) -+ return; -+ - h = height - 1; - for (y = 0; y < h; y++) { - *s++ = '"'; - for (x = 0; x < width; x++, pixels++) { -- strncpy(s, colors[*pixels].string, cpp); -+ if(cpp >= (data_size - (s-dataptr))) -+ return; -+ strncpy(s, colors[*pixels].string, cpp); /* how can we trust *pixels? :-\ */ - s += cpp; - } -+ if((data_size - (s-dataptr)) < 4) -+ return; - strcpy(s, "\",\n"); - s += 3; - } - /* duplicate some code to avoid a test in the loop */ - *s++ = '"'; - for (x = 0; x < width; x++, pixels++) { -- strncpy(s, colors[*pixels].string, cpp); -+ if(cpp >= (data_size - (s-dataptr))) -+ return; -+ strncpy(s, colors[*pixels].string, cpp); /* how can we trust *pixels? */ - s += cpp; - } - *s++ = '"'; - *used_size += s - dataptr; - } - --static int -+static unsigned int - ExtensionsSize(ext, num) - XpmExtension *ext; - unsigned int num; -@@ -333,21 +371,26 @@ - char **line; - - size = 0; -+ if(num == 0) -+ return(0); /* ok? */ - for (x = 0; x < num; x++, ext++) { - /* 11 = 10 (for ',\n"XPMEXT ') + 1 (for '"') */ - size += strlen(ext->name) + 11; -- a = ext->nlines; -+ a = ext->nlines; /* how can we trust ext->nlines to be not out-of-bounds? */ - for (y = 0, line = ext->lines; y < a; y++, line++) - /* 4 = 3 (for ',\n"') + 1 (for '"') */ - size += strlen(*line) + 4; - } - /* 13 is for ',\n"XPMENDEXT"' */ -+ if(size > UINT_MAX - 13) /* unlikely */ -+ return(0); - return size + 13; - } - - static void --WriteExtensions(dataptr, used_size, ext, num) -+WriteExtensions(dataptr, data_size, used_size, ext, num) - char *dataptr; -+ unsigned int data_size; - unsigned int *used_size; - XpmExtension *ext; - unsigned int num; -@@ -360,7 +403,7 @@ - #ifndef VOID_SPRINTF - s += 11 + - #endif -- sprintf(s, ",\n\"XPMEXT %s\"", ext->name); -+ snprintf(s, data_size - (s-dataptr), ",\n\"XPMEXT %s\"", ext->name); - #ifdef VOID_SPRINTF - s += strlen(ext->name) + 11; - #endif -@@ -369,13 +412,13 @@ - #ifndef VOID_SPRINTF - s += 4 + - #endif -- sprintf(s, ",\n\"%s\"", *line); -+ snprintf(s, data_size - (s-dataptr), ",\n\"%s\"", *line); - #ifdef VOID_SPRINTF - s += strlen(*line) + 4; - #endif - } - } -- strcpy(s, ",\n\"XPMENDEXT\""); -+ strncpy(s, ",\n\"XPMENDEXT\"", data_size - (s-dataptr)-1); - *used_size += s - dataptr + 13; - } - -@@ -386,6 +429,7 @@ - int size = 0; - - /* 5 = 2 (for "/_*") + 3 (for "*_/\n") */ -+ /* wrap possible but *very* unlikely */ - if (info->hints_cmt) - size += 5 + strlen(info->hints_cmt); - -diff -r -u motif.0194/lib/Xm/XpmCrDatFrI.c motif/lib/Xm/XpmCrDatFrI.c ---- motif.0194/lib/Xm/XpmCrDatFrI.c 2005-01-18 15:34:38.000000000 +0100 -+++ motif/lib/Xm/XpmCrDatFrI.c 2005-01-18 19:26:30.708048952 +0100 -@@ -33,13 +33,16 @@ - * Developed by Arnaud Le Hors * - \*****************************************************************************/ - -+/* October 2004, source code review by Thomas Biege <thomas@suse.de> */ -+ - #include "XpmI.h" - - LFUNC(CreateColors, int, (char **dataptr, unsigned int *data_size, - XpmColor *colors, unsigned int ncolors, - unsigned int cpp)); - --LFUNC(CreatePixels, void, (char **dataptr, unsigned int width, -+LFUNC(CreatePixels, void, (char **dataptr, unsigned int data_size, -+ unsigned int width, - unsigned int height, unsigned int cpp, - unsigned int *pixels, XpmColor *colors)); - -@@ -47,7 +50,8 @@ - unsigned int *ext_size, - unsigned int *ext_nlines)); - --LFUNC(CreateExtensions, void, (char **dataptr, unsigned int offset, -+LFUNC(CreateExtensions, void, (char **dataptr, unsigned int data_size, -+ unsigned int offset, - XpmExtension *ext, unsigned int num, - unsigned int ext_nlines)); - -@@ -88,7 +92,7 @@ - - #undef RETURN - #define RETURN(status) \ --{ \ -+do { \ - if (header) { \ - for (l = 0; l < header_nlines; l++) \ - if (header[l]) \ -@@ -96,7 +100,7 @@ - XpmFree(header); \ - } \ - return(status); \ --} -+} while(0) - - int - XpmCreateDataFromXpmImage(data_return, image, info) -@@ -127,11 +131,17 @@ - * alloc a temporary array of char pointer for the header section which - * is the hints line + the color table lines - */ -- header_nlines = 1 + image->ncolors; -+ header_nlines = 1 + image->ncolors; /* this may wrap and/or become 0 */ -+ -+ /* 2nd check superfluous if we do not need header_nlines any further */ -+ if(header_nlines <= image->ncolors || -+ header_nlines >= UINT_MAX / sizeof(char *)) -+ return(XpmNoMemory); -+ - header_size = sizeof(char *) * header_nlines; -- if (header_size >= SIZE_MAX / sizeof(char *)) -+ if (header_size >= UINT_MAX / sizeof(char *)) - return (XpmNoMemory); -- header = (char **) XpmCalloc(header_size, sizeof(char *)); -+ header = (char **) XpmCalloc(header_size, sizeof(char *)); /* can we trust image->ncolors */ - if (!header) - return (XpmNoMemory); - -@@ -175,8 +185,22 @@ - - /* now we know the size needed, alloc the data and copy the header lines */ - offset = image->width * image->cpp + 1; -- data_size = header_size + (image->height + ext_nlines) * sizeof(char *) -- + image->height * offset + ext_size; -+ -+ if(offset <= image->width || offset <= image->cpp) -+ RETURN(XpmNoMemory); -+ -+ if( (image->height + ext_nlines) >= UINT_MAX / sizeof(char *)) -+ RETURN(XpmNoMemory); -+ data_size = (image->height + ext_nlines) * sizeof(char *); -+ -+ if (image->height > UINT_MAX / offset || -+ image->height * offset > UINT_MAX - data_size) -+ RETURN(XpmNoMemory); -+ data_size += image->height * offset; -+ -+ if( (header_size + ext_size) >= (UINT_MAX - data_size) ) -+ RETURN(XpmNoMemory); -+ data_size += header_size + ext_size; - - data = (char **) XpmMalloc(data_size); - if (!data) -@@ -184,8 +208,10 @@ - - data_nlines = header_nlines + image->height + ext_nlines; - *data = (char *) (data + data_nlines); -+ -+ /* can header have less elements then n suggests? */ - n = image->ncolors; -- for (l = 0, sptr = data, sptr2 = header; l <= n; l++, sptr++, sptr2++) { -+ for (l = 0, sptr = data, sptr2 = header; l <= n && sptr && sptr2; l++, sptr++, sptr2++) { - strcpy(*sptr, *sptr2); - *(sptr + 1) = *sptr + strlen(*sptr2) + 1; - } -@@ -194,12 +220,13 @@ - data[header_nlines] = (char *) data + header_size - + (image->height + ext_nlines) * sizeof(char *); - -- CreatePixels(data + header_nlines, image->width, image->height, -+ CreatePixels(data + header_nlines, data_size-header_nlines, image->width, image->height, - image->cpp, image->data, image->colorTable); - - /* print extensions */ - if (extensions) -- CreateExtensions(data + header_nlines + image->height - 1, offset, -+ CreateExtensions(data + header_nlines + image->height - 1, -+ data_size - header_nlines - image->height + 1, offset, - info->extensions, info->nextensions, - ext_nlines); - -@@ -221,23 +248,34 @@ - char *s, *s2; - char **defaults; - -+ /* can ncolors be trusted here? */ - for (a = 0; a < ncolors; a++, colors++, dataptr++) { - - defaults = (char **) colors; -+ if (sizeof(buf) <= cpp) -+ return(XpmNoMemory); - strncpy(buf, *defaults++, cpp); - s = buf + cpp; - -+ if(sizeof(buf) <= (s-buf)) -+ return XpmNoMemory; -+ - for (key = 1; key <= NKEYS; key++, defaults++) { - if (s2 = *defaults) { - #ifndef VOID_SPRINTF - s += - #endif -- sprintf(s, "\t%s %s", xpmColorKeys[key - 1], s2); -++ /* assume C99 compliance */ -++ snprintf(s, sizeof(buf)-(s-buf), "\t%s %s", xpmColorKeys[key - 1], s2); - #ifdef VOID_SPRINTF - s += strlen(s); - #endif -+ /* does s point out-of-bounds? */ -++ if(sizeof(buf) < (s-buf)) -++ return XpmNoMemory; - } - } -+ /* what about using strdup()? */ - l = s - buf + 1; - s = (char *) XpmMalloc(l); - if (!s) -@@ -249,8 +287,9 @@ - } - - static void --CreatePixels(dataptr, width, height, cpp, pixels, colors) -+CreatePixels(dataptr, data_size, width, height, cpp, pixels, colors) - char **dataptr; -+ unsigned int data_size; - unsigned int width; - unsigned int height; - unsigned int cpp; -@@ -260,21 +299,38 @@ - char *s; - unsigned int x, y, h, offset; - -+ if(height <= 1) -+ return; -+ - h = height - 1; -+ - offset = width * cpp + 1; -+ -+ if(offset <= width || offset <= cpp) -+ return; -+ -+ /* why trust h? */ - for (y = 0; y < h; y++, dataptr++) { - s = *dataptr; -+ /* why trust width? */ - for (x = 0; x < width; x++, pixels++) { -- strncpy(s, colors[*pixels].string, cpp); -+ if(cpp > (data_size - (s - *dataptr))) -+ return; -+ strncpy(s, colors[*pixels].string, cpp); /* why trust pixel? */ - s += cpp; - } - *s = '\0'; -+ if(offset > data_size) -+ return; - *(dataptr + 1) = *dataptr + offset; - } - /* duplicate some code to avoid a test in the loop */ - s = *dataptr; -+ /* why trust width? */ - for (x = 0; x < width; x++, pixels++) { -- strncpy(s, colors[*pixels].string, cpp); -+ if(cpp > data_size - (s - *dataptr)) -+ return; -+ strncpy(s, colors[*pixels].string, cpp); /* why should we trust *pixel? */ - s += cpp; - } - *s = '\0'; -@@ -307,8 +363,9 @@ - } - - static void --CreateExtensions(dataptr, offset, ext, num, ext_nlines) -+CreateExtensions(dataptr, data_size, offset, ext, num, ext_nlines) - char **dataptr; -+ unsigned int data_size; - unsigned int offset; - XpmExtension *ext; - unsigned int num; -@@ -321,12 +378,12 @@ - dataptr++; - a = 0; - for (x = 0; x < num; x++, ext++) { -- sprintf(*dataptr, "XPMEXT %s", ext->name); -+ snprintf(*dataptr, data_size, "XPMEXT %s", ext->name); - a++; - if (a < ext_nlines) - *(dataptr + 1) = *dataptr + strlen(ext->name) + 8; - dataptr++; -- b = ext->nlines; -+ b = ext->nlines; /* can we trust these values? */ - for (y = 0, line = ext->lines; y < b; y++, line++) { - strcpy(*dataptr, *line); - a++; -diff -r -u motif.0194/lib/Xm/Xpmcreate.c motif/lib/Xm/Xpmcreate.c ---- motif.0194/lib/Xm/Xpmcreate.c 2005-01-18 15:34:38.000000000 +0100 -+++ motif/lib/Xm/Xpmcreate.c 2005-01-18 19:55:57.894395792 +0100 -@@ -39,6 +39,8 @@ - * HeDu (hedu@cul-ipn.uni-kiel.de) 4/94 - */ - -+/* October 2004, source code review by Thomas Biege <thomas@suse.de> */ -+ - #include "XpmI.h" - #include <ctype.h> - -@@ -560,7 +562,7 @@ - */ - } else { - #endif -- int i; -+ unsigned int i; - - ncols = visual->map_entries; - cols = (XColor *) XpmCalloc(ncols, sizeof(XColor)); -@@ -718,17 +720,10 @@ - /* function call in case of error, frees only locally allocated variables */ - #undef RETURN - #define RETURN(status) \ --{ \ -- if (ximage) XDestroyImage(ximage); \ -- if (shapeimage) XDestroyImage(shapeimage); \ -- if (image_pixels) XpmFree(image_pixels); \ -- if (mask_pixels) XpmFree(mask_pixels); \ -- if (nalloc_pixels) \ -- (*freeColors)(display, colormap, alloc_pixels, nalloc_pixels, NULL); \ -- if (alloc_pixels) XpmFree(alloc_pixels); \ -- if (used_pixels) XpmFree(used_pixels); \ -- return (status); \ --} -+do { \ -+ ErrorStatus = status; \ -+ goto error; \ -+} while(0) - - int - XpmCreateImageFromXpmImage(display, image, -@@ -799,7 +794,7 @@ - - ErrorStatus = XpmSuccess; - -- if (image->ncolors >= SIZE_MAX / sizeof(Pixel)) -+ if (image->ncolors >= UINT_MAX / sizeof(Pixel)) - return (XpmNoMemory); - - /* malloc pixels index tables */ -@@ -945,10 +940,14 @@ - return (XpmNoMemory); - - #ifndef FOR_MSW -- if (height != 0 && (*image_return)->bytes_per_line >= SIZE_MAX / height) -+ if (height != 0 && (*image_return)->bytes_per_line >= INT_MAX / height) { -+ XDestroyImage(*image_return); - return XpmNoMemory; -+ } - /* now that bytes_per_line must have been set properly alloc data */ -- (*image_return)->data = -+ if((*image_return)->bytes_per_line == 0 || height == 0) -+ return XpmNoMemory; -+ (*image_return)->data = - (char *) XpmMalloc((*image_return)->bytes_per_line * height); - - if (!(*image_return)->data) { -@@ -975,7 +974,7 @@ - LFUNC(_putbits, void, (register char *src, int dstoffset, - register int numbits, register char *dst)); - --LFUNC(_XReverse_Bytes, int, (register unsigned char *bpt, register int nb)); -+LFUNC(_XReverse_Bytes, int, (register unsigned char *bpt, register unsigned int nb)); - - static unsigned char Const _reverse_byte[0x100] = { - 0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0, -@@ -1015,12 +1014,12 @@ - static int - _XReverse_Bytes(bpt, nb) - register unsigned char *bpt; -- register int nb; -+ register unsigned int nb; - { - do { - *bpt = _reverse_byte[*bpt]; - bpt++; -- } while (--nb > 0); -+ } while (--nb > 0); /* is nb user-controled? */ - return 0; - } - -@@ -1159,7 +1158,7 @@ - register char *src; - register char *dst; - register unsigned int *iptr; -- register int x, y, i; -+ register unsigned int x, y, i; - register char *data; - Pixel pixel, px; - int nbytes, depth, ibu, ibpp; -@@ -1169,8 +1168,8 @@ - depth = image->depth; - if (depth == 1) { - ibu = image->bitmap_unit; -- for (y = 0; y < height; y++) -- for (x = 0; x < width; x++, iptr++) { -+ for (y = 0; y < height; y++) /* how can we trust height */ -+ for (x = 0; x < width; x++, iptr++) { /* how can we trust width */ - pixel = pixels[*iptr]; - for (i = 0, px = pixel; i < sizeof(unsigned long); - i++, px >>= 8) -@@ -1245,12 +1244,12 @@ - { - unsigned char *data; - unsigned int *iptr; -- int y; -+ unsigned int y; - Pixel pixel; - - #ifdef WITHOUT_SPEEDUPS - -- int x; -+ unsigned int x; - unsigned char *addr; - - data = (unsigned char *) image->data; -@@ -1287,7 +1286,7 @@ - - #else /* WITHOUT_SPEEDUPS */ - -- int bpl = image->bytes_per_line; -+ unsigned int bpl = image->bytes_per_line; - unsigned char *data_ptr, *max_data; - - data = (unsigned char *) image->data; -@@ -1355,11 +1354,11 @@ - { - unsigned char *data; - unsigned int *iptr; -- int y; -+ unsigned int y; - - #ifdef WITHOUT_SPEEDUPS - -- int x; -+ unsigned int x; - unsigned char *addr; - - data = (unsigned char *) image->data; -@@ -1383,7 +1382,7 @@ - - Pixel pixel; - -- int bpl = image->bytes_per_line; -+ unsigned int bpl = image->bytes_per_line; - unsigned char *data_ptr, *max_data; - - data = (unsigned char *) image->data; -@@ -1436,11 +1435,11 @@ - { - char *data; - unsigned int *iptr; -- int y; -+ unsigned int y; - - #ifdef WITHOUT_SPEEDUPS - -- int x; -+ unsigned int x; - - data = image->data; - iptr = pixelindex; -@@ -1450,7 +1449,7 @@ - - #else /* WITHOUT_SPEEDUPS */ - -- int bpl = image->bytes_per_line; -+ unsigned int bpl = image->bytes_per_line; - char *data_ptr, *max_data; - - data = image->data; -@@ -1485,12 +1484,12 @@ - PutImagePixels(image, width, height, pixelindex, pixels); - else { - unsigned int *iptr; -- int y; -+ unsigned int y; - char *data; - - #ifdef WITHOUT_SPEEDUPS - -- int x; -+ unsigned int x; - - data = image->data; - iptr = pixelindex; -@@ -1668,6 +1667,9 @@ - Pixel px; - int nbytes; - -+ if(x < 0 || y < 0) -+ return 0; -+ - for (i=0, px=pixel; i<sizeof(unsigned long); i++, px>>=8) - ((unsigned char *)&pixel)[i] = px; - src = &ximage->data[XYINDEX(x, y, ximage)]; -@@ -1699,7 +1701,10 @@ - register int i; - register char *data; - Pixel px; -- int nbytes, ibpp; -+ unsigned int nbytes, ibpp; -+ -+ if(x < 0 || y < 0) -+ return 0; - - ibpp = ximage->bits_per_pixel; - if (ximage->depth == 4) -@@ -1732,6 +1737,9 @@ - { - unsigned char *addr; - -+ if(x < 0 || y < 0) -+ return 0; -+ - addr = &((unsigned char *)ximage->data) [ZINDEX32(x, y, ximage)]; - *((unsigned long *)addr) = pixel; - return 1; -@@ -1746,6 +1754,9 @@ - { - unsigned char *addr; - -+ if(x < 0 || y < 0) -+ return 0; -+ - addr = &((unsigned char *)ximage->data) [ZINDEX32(x, y, ximage)]; - addr[0] = pixel >> 24; - addr[1] = pixel >> 16; -@@ -1763,6 +1774,9 @@ - { - unsigned char *addr; - -+ if(x < 0 || y < 0) -+ return 0; -+ - addr = &((unsigned char *)ximage->data) [ZINDEX32(x, y, ximage)]; - addr[3] = pixel >> 24; - addr[2] = pixel >> 16; -@@ -1780,6 +1794,9 @@ - { - unsigned char *addr; - -+ if(x < 0 || y < 0) -+ return 0; -+ - addr = &((unsigned char *)ximage->data) [ZINDEX16(x, y, ximage)]; - addr[0] = pixel >> 8; - addr[1] = pixel; -@@ -1795,6 +1812,9 @@ - { - unsigned char *addr; - -+ if(x < 0 || y < 0) -+ return 0; -+ - addr = &((unsigned char *)ximage->data) [ZINDEX16(x, y, ximage)]; - addr[1] = pixel >> 8; - addr[0] = pixel; -@@ -1808,6 +1828,9 @@ - int y; - unsigned long pixel; - { -+ if(x < 0 || y < 0) -+ return 0; -+ - ximage->data[ZINDEX8(x, y, ximage)] = pixel; - return 1; - } -@@ -1819,6 +1842,9 @@ - int y; - unsigned long pixel; - { -+ if(x < 0 || y < 0) -+ return 0; -+ - if (pixel & 1) - ximage->data[ZINDEX1(x, y, ximage)] |= 0x80 >> (x & 7); - else -@@ -1833,6 +1859,9 @@ - int y; - unsigned long pixel; - { -+ if(x < 0 || y < 0) -+ return 0; -+ - if (pixel & 1) - ximage->data[ZINDEX1(x, y, ximage)] |= 1 << (x & 7); - else -@@ -1992,8 +2021,8 @@ - xpmGetCmt(data, &colors_cmt); - - /* malloc pixels index tables */ -- if (ncolors >= SIZE_MAX / sizeof(Pixel)) -- return XpmNoMemory; -+ if (ncolors >= UINT_MAX / sizeof(Pixel)) -+ RETURN(XpmNoMemory); - - image_pixels = (Pixel *) XpmMalloc(sizeof(Pixel) * ncolors); - if (!image_pixels) -@@ -2104,7 +2133,7 @@ - * free the hastable - */ - if (ErrorStatus != XpmSuccess) -- RETURN(ErrorStatus) -+ RETURN(ErrorStatus); - else if (USE_HASHTABLE) - xpmHashTableFree(&hashtable); - -@@ -2251,14 +2280,14 @@ - - /* array of pointers malloced by need */ - unsigned short *cidx[256]; -- int char1; -+ unsigned int char1; - - if (ncolors > 256) - return (XpmFileInvalid); - - bzero((char *)cidx, 256 * sizeof(unsigned short *)); /* init */ - for (a = 0; a < ncolors; a++) { -- char1 = colorTable[a].string[0]; -+ char1 = (unsigned char) colorTable[a].string[0]; - if (cidx[char1] == NULL) { /* get new memory */ - cidx[char1] = (unsigned short *) - XpmCalloc(256, sizeof(unsigned short)); -diff -r -u motif.0194/lib/Xm/Xpmdata.c motif/lib/Xm/Xpmdata.c ---- motif.0194/lib/Xm/Xpmdata.c 2000-05-10 16:02:01.000000000 +0200 -+++ motif/lib/Xm/Xpmdata.c 2005-01-18 20:01:43.286888152 +0100 -@@ -274,7 +274,7 @@ - } - ungetc(c, file); - } -- return (n); -+ return (n); /* this returns bytes read + 1 */ - } - - /* -@@ -371,8 +371,9 @@ - { - if (!mdata->type) - *cmt = NULL; -- else if (mdata->CommentLength) { -- *cmt = (char *) XpmMalloc(mdata->CommentLength + 1); -+ else if (dmata->CommentLength != 0 && mdata->CommentLength < UINT_MAX - 1) { -+ if( (*cmt = (char *) XpmMalloc(mdata->CommentLength + 1)) == NULL) -+ return XpmNoMemory; - strncpy(*cmt, mdata->Comment, mdata->CommentLength); - (*cmt)[mdata->CommentLength] = '\0'; - mdata->CommentLength = 0; -@@ -400,7 +401,7 @@ - xpmParseHeader(mdata) - xpmData *mdata; - { -- char buf[BUFSIZ]; -+ char buf[BUFSIZ+1] = {0}; - int l, n = 0; - - if (mdata->type) { -diff -r -u motif.0194/lib/Xm/Xpmhashtab.c motif/lib/Xm/Xpmhashtab.c ---- motif.0194/lib/Xm/Xpmhashtab.c 2005-01-18 15:34:38.000000000 +0100 -+++ motif/lib/Xm/Xpmhashtab.c 2005-01-18 20:02:37.302676504 +0100 -@@ -139,13 +139,13 @@ - unsigned int size = table->size; - xpmHashAtom *t, *p; - int i; -- int oldSize = size; -+ unsigned int oldSize = size; - - t = atomTable; - HASH_TABLE_GROWS - table->size = size; - table->limit = size / 3; -- if (size >= SIZE_MAX / sizeof(*atomTable)) -+ if (size >= UINT_MAX / sizeof(*atomTable)) - return (XpmNoMemory); - atomTable = (xpmHashAtom *) XpmMalloc(size * sizeof(*atomTable)); - if (!atomTable) -@@ -207,7 +207,7 @@ - table->size = INITIAL_HASH_SIZE; - table->limit = table->size / 3; - table->used = 0; -- if (table->size >= SIZE_MAX / sizeof(*atomTable)) -+ if (table->size >= UINT_MAX / sizeof(*atomTable)) - return (XpmNoMemory); - atomTable = (xpmHashAtom *) XpmMalloc(table->size * sizeof(*atomTable)); - if (!atomTable) -diff -r -u motif.0194/lib/Xm/XpmI.h motif/lib/Xm/XpmI.h ---- motif.0194/lib/Xm/XpmI.h 2005-01-18 15:34:38.000000000 +0100 -+++ motif/lib/Xm/XpmI.h 2005-01-18 19:44:59.012561056 +0100 -@@ -108,8 +108,10 @@ - * lets try to solve include files - */ - -+#include <sys/types.h> - #include <stdio.h> - #include <stdlib.h> -+#include <limits.h> - /* stdio.h doesn't declare popen on a Sequent DYNIX OS */ - #ifdef sequent - extern FILE *popen(); -diff -r -u motif.0194/lib/Xm/Xpmmisc.c motif/lib/Xm/Xpmmisc.c ---- motif.0194/lib/Xm/Xpmmisc.c 2000-05-10 16:02:01.000000000 +0200 -+++ motif/lib/Xm/Xpmmisc.c 2005-01-18 20:03:23.061720072 +0100 -@@ -47,7 +47,7 @@ - char *s1; - { - char *s2; -- int l = strlen(s1) + 1; -+ size_t l = strlen(s1) + 1; - - if (s2 = (char *) XpmMalloc(l)) - strcpy(s2, s1); -diff -r -u motif.0194/lib/Xm/Xpmparse.c motif/lib/Xm/Xpmparse.c ---- motif.0194/lib/Xm/Xpmparse.c 2005-01-18 15:34:38.000000000 +0100 -+++ motif/lib/Xm/Xpmparse.c 2005-01-18 20:09:04.590799760 +0100 -@@ -43,21 +43,21 @@ - #include <ctype.h> - - #ifdef HAS_STRLCAT --# define STRLCAT(dst, src, dstsize) { \ -+# define STRLCAT(dst, src, dstsize) do { \ - if (strlcat(dst, src, dstsize) >= (dstsize)) \ -- return (XpmFileInvalid); } --# define STRLCPY(dst, src, dstsize) { \ -+ return (XpmFileInvalid); } while(0) -+# define STRLCPY(dst, src, dstsize) do { \ - if (strlcpy(dst, src, dstsize) >= (dstsize)) \ -- return (XpmFileInvalid); } -+ return (XpmFileInvalid); } while(0) - #else --# define STRLCAT(dst, src, dstsize) { \ -+# define STRLCAT(dst, src, dstsize) do { \ - if ((strlen(dst) + strlen(src)) < (dstsize)) \ - strcat(dst, src); \ -- else return (XpmFileInvalid); } --# define STRLCPY(dst, src, dstsize) { \ -+ else return (XpmFileInvalid); } while(0) -+# define STRLCPY(dst, src, dstsize) do { \ - if (strlen(src) < (dstsize)) \ - strcpy(dst, src); \ -- else return (XpmFileInvalid); } -+ else return (XpmFileInvalid); } while(0) - #endif - - LFUNC(ParsePixels, int, (xpmData *data, unsigned int width, -@@ -77,14 +77,9 @@ - /* function call in case of error, frees only locally allocated variables */ - #undef RETURN - #define RETURN(status) \ --{ \ -- if (colorTable) xpmFreeColorTable(colorTable, ncolors); \ -- if (pixelindex) XpmFree(pixelindex); \ -- if (hints_cmt) XpmFree(hints_cmt); \ -- if (colors_cmt) XpmFree(colors_cmt); \ -- if (pixels_cmt) XpmFree(pixels_cmt); \ -- return(status); \ --} -+do { \ -+ goto error; -+} while(0) - - /* - * This function parses an Xpm file or data and store the found informations -@@ -347,7 +342,7 @@ - char **defaults; - int ErrorStatus; - -- if (ncolors >= SIZE_MAX / sizeof(XpmColor)) -+ if (ncolors >= UINT_MAX / sizeof(XpmColor)) - return (XpmNoMemory); - colorTable = (XpmColor *) XpmCalloc(ncolors, sizeof(XpmColor)); - if (!colorTable) -@@ -360,7 +355,7 @@ - /* - * read pixel value - */ -- if (cpp >= SIZE_MAX - 1) { -+ if (cpp >= UINT_MAX - 1) { - xpmFreeColorTable(colorTable, ncolors); - return (XpmNoMemory); - } -@@ -419,9 +414,9 @@ - return (XpmFileInvalid); - } - if (!lastwaskey) -- STRLCAT(curbuf, " ", sizeof(curbuf)); /* append space */ -+ STRLCAT(curbuf, " ", sizeof(curbuf));/* append space */ - buf[l] = '\0'; -- STRLCAT(curbuf, buf, sizeof(curbuf));/* append buf */ -+ STRLCAT(curbuf, buf, sizeof(curbuf)); /* append buf */ - lastwaskey = 0; - } - } -@@ -429,7 +424,7 @@ - xpmFreeColorTable(colorTable, ncolors); - return (XpmFileInvalid); - } -- len = strlen(curbuf) + 1; -+ len = strlen(curbuf) + 1; /* integer overflow just theoretically possible */ - s = defaults[curkey] = (char *) XpmMalloc(len); - if (!s) { - xpmFreeColorTable(colorTable, ncolors); -@@ -448,7 +443,7 @@ - /* - * read pixel value - */ -- if (cpp >= SIZE_MAX - 1) { -+ if (cpp >= UINT_MAX - 1) { - xpmFreeColorTable(colorTable, ncolors); - return (XpmNoMemory); - } -@@ -493,7 +488,7 @@ - memcpy(s, curbuf, len); - color->c_color = s; - *curbuf = '\0'; /* reset curbuf */ -- if (a < ncolors - 1) -+ if (a < ncolors - 1) /* can we trust ncolors -> leave data's bounds */ - xpmNextString(data); /* get to the next string */ - } - } -@@ -512,11 +507,11 @@ - xpmHashTable *hashtable; - unsigned int **pixels; - { -- unsigned int *iptr, *iptr2; -+ unsigned int *iptr, *iptr2 = NULL; /* found by Egbert Eich */ - unsigned int a, x, y; - -- if ((height > 0 && width >= SIZE_MAX / height) || -- width * height >= SIZE_MAX / sizeof(unsigned int)) -+ if ((height > 0 && width >= UINT_MAX / height) || -+ width * height >= UINT_MAX / sizeof(unsigned int)) - return XpmNoMemory; - #ifndef FOR_MSW - iptr2 = (unsigned int *) XpmMalloc(sizeof(unsigned int) * width * height); -@@ -541,8 +536,10 @@ - { - unsigned short colidx[256]; - -- if (ncolors > 256) -+ if (ncolors > 256) { -+ XpmFree(iptr2); /* found by Egbert Eich */ - return (XpmFileInvalid); -+ } - - bzero((char *)colidx, 256 * sizeof(short)); - for (a = 0; a < ncolors; a++) -@@ -569,16 +566,20 @@ - { - - /* free all allocated pointers at all exits */ --#define FREE_CIDX {int f; for (f = 0; f < 256; f++) \ --if (cidx[f]) XpmFree(cidx[f]);} -+#define FREE_CIDX \ -+do \ -+{ \ -+ int f; for (f = 0; f < 256; f++) \ -+ if (cidx[f]) XpmFree(cidx[f]); \ -+} while(0) - - /* array of pointers malloced by need */ - unsigned short *cidx[256]; -- int char1; -+ unsigned int char1; - - bzero((char *)cidx, 256 * sizeof(unsigned short *)); /* init */ - for (a = 0; a < ncolors; a++) { -- char1 = colorTable[a].string[0]; -+ char1 = (unsigned char) colorTable[a].string[0]; - if (cidx[char1] == NULL) { /* get new memory */ - cidx[char1] = (unsigned short *) - XpmCalloc(256, sizeof(unsigned short)); -@@ -621,8 +622,10 @@ - char *s; - char buf[BUFSIZ]; - -- if (cpp >= sizeof(buf)) -+ if (cpp >= sizeof(buf)) { -+ XpmFree(iptr2); /* found by Egbert Eich */ - return (XpmFileInvalid); -+ } - - buf[cpp] = '\0'; - if (USE_HASHTABLE) { -@@ -632,7 +635,7 @@ - xpmNextString(data); - for (x = 0; x < width; x++, iptr++) { - for (a = 0, s = buf; a < cpp; a++, s++) -- *s = xpmGetC(data); -+ *s = xpmGetC(data); /* int assigned to char, not a problem here */ - slot = xpmHashSlot(hashtable, buf); - if (!*slot) { /* no color matches */ - XpmFree(iptr2); -@@ -646,7 +649,7 @@ - xpmNextString(data); - for (x = 0; x < width; x++, iptr++) { - for (a = 0, s = buf; a < cpp; a++, s++) -- *s = xpmGetC(data); -+ *s = xpmGetC(data); /* int assigned to char, not a problem here */ - for (a = 0; a < ncolors; a++) - if (!strcmp(colorTable[a].string, buf)) - break; -@@ -701,7 +704,7 @@ - while (!notstart && notend) { - /* there starts an extension */ - ext = (XpmExtension *) -- XpmRealloc(exts, (num + 1) * sizeof(XpmExtension)); -+ XpmRealloc(exts, (num + 1) * sizeof(XpmExtension)); /* can the loop be forced to iterate often enough to make "(num + 1) * sizeof(XpmExtension)" wrapping? */ - if (!ext) { - XpmFree(string); - XpmFreeExtensions(exts, num); -@@ -738,7 +741,7 @@ - while ((notstart = strncmp("XPMEXT", string, 6)) - && (notend = strncmp("XPMENDEXT", string, 9))) { - sp = (char **) -- XpmRealloc(ext->lines, (nlines + 1) * sizeof(char *)); -+ XpmRealloc(ext->lines, (nlines + 1) * sizeof(char *)); /* can we iterate enough for a wrapping? */ - if (!sp) { - XpmFree(string); - ext->nlines = nlines; -diff -r -u motif.0194/lib/Xm/XpmRdFToBuf.c motif/lib/Xm/XpmRdFToBuf.c ---- motif.0194/lib/Xm/XpmRdFToBuf.c 2000-05-10 16:02:01.000000000 +0200 -+++ motif/lib/Xm/XpmRdFToBuf.c 2005-01-18 19:37:46.233353496 +0100 -@@ -38,6 +38,8 @@ - * HeDu (hedu@cul-ipn.uni-kiel.de) 4/94 - */ - -+/* October 2004, source code review by Thomas Biege <thomas@suse.de> */ -+ - #include "XpmI.h" - #include <sys/stat.h> - #if !defined(FOR_MSW) && !defined(WIN32) -@@ -59,7 +61,8 @@ - char *filename; - char **buffer_return; - { -- int fd, fcheck, len; -+ int fd, fcheck; -+ off_t len; - char *ptr; - struct stat stats; - FILE *fp; -@@ -83,7 +86,7 @@ - close(fd); - return XpmOpenFailed; - } -- len = (int) stats.st_size; -+ len = stats.st_size; - ptr = (char *) XpmMalloc(len + 1); - if (!ptr) { - fclose(fp); -diff -r -u motif.0194/lib/Xm/XpmRdFToI.c motif/lib/Xm/XpmRdFToI.c ---- motif.0194/lib/Xm/XpmRdFToI.c 2000-05-10 16:02:01.000000000 +0200 -+++ motif/lib/Xm/XpmRdFToI.c 2005-01-18 19:39:36.739554000 +0100 -@@ -33,6 +33,8 @@ - * Developed by Arnaud Le Hors * - \*****************************************************************************/ - -+/* October 2004, source code review by Thomas Biege <thomas@suse.de> */ -+ - #include "XpmI.h" - #include <sys/stat.h> - #include <sys/param.h> -@@ -122,6 +124,12 @@ - /* - * open the given file to be read as an xpmData which is returned. - */ -+#ifndef NO_ZPIPE -+ FILE *s_popen(char *cmd, const char *type); -+#else -+# define s_popen popen -+#endif -+ - static int - OpenReadFile(filename, mdata) - char *filename; -@@ -139,17 +147,21 @@ - mdata->type = XPMFILE; - } else { - #ifndef NO_ZPIPE -- int len = strlen(filename); -+ size_t len = strlen(filename); -+ -+ if(len == 0 || -+ filename[len-1] == '/') -+ return(XpmOpenFailed); - if ((len > 2) && !strcmp(".Z", filename + (len - 2))) { - mdata->type = XPMPIPE; -- sprintf(buf, "uncompress -c \"%s\"", filename); -- if (!(mdata->stream.file = popen(buf, "r"))) -+ snprintf(buf, sizeof(buf), "uncompress -c \"%s\"", filename); -+ if (!(mdata->stream.file = s_popen(buf, "r"))) - return (XpmOpenFailed); - - } else if ((len > 3) && !strcmp(".gz", filename + (len - 3))) { - mdata->type = XPMPIPE; -- sprintf(buf, "gunzip -qc \"%s\"", filename); -- if (!(mdata->stream.file = popen(buf, "r"))) -+ snprintf(buf, sizeof(buf), "gunzip -qc \"%s\"", filename); -+ if (!(mdata->stream.file = s_popen(buf, "r"))) - return (XpmOpenFailed); - - } else { -@@ -157,19 +169,19 @@ - if (!(compressfile = (char *) XpmMalloc(len + 4))) - return (XpmNoMemory); - -- sprintf(compressfile, "%s.Z", filename); -+ snprintf(compressfile, len+4, "%s.Z", filename); - if (!stat(compressfile, &status)) { -- sprintf(buf, "uncompress -c \"%s\"", compressfile); -- if (!(mdata->stream.file = popen(buf, "r"))) { -+ snprintf(buf, sizeof(buf), "uncompress -c \"%s\"", compressfile); -+ if (!(mdata->stream.file = s_popen(buf, "r"))) { - XpmFree(compressfile); - return (XpmOpenFailed); - } - mdata->type = XPMPIPE; - } else { -- sprintf(compressfile, "%s.gz", filename); -+ snprintf(compressfile, len+4, "%s.gz", filename); - if (!stat(compressfile, &status)) { -- sprintf(buf, "gunzip -c \"%s\"", compressfile); -- if (!(mdata->stream.file = popen(buf, "r"))) { -+ snprintf(buf, sizeof(buf), "gunzip -c \"%s\"", compressfile); -+ if (!(mdata->stream.file = s_popen(buf, "r"))) { - XpmFree(compressfile); - return (XpmOpenFailed); - } -@@ -211,7 +223,7 @@ - break; - #ifndef NO_ZPIPE - case XPMPIPE: -- pclose(mdata->stream.file); -+ fclose(mdata->stream.file); - break; - #endif - } -diff -r -u motif.0194/lib/Xm/Xpmscan.c motif/lib/Xm/Xpmscan.c ---- motif.0194/lib/Xm/Xpmscan.c 2005-01-18 15:34:38.000000000 +0100 -+++ motif/lib/Xm/Xpmscan.c 2005-01-18 20:15:18.509955408 +0100 -@@ -38,6 +38,8 @@ - * HeDu (hedu@cul-ipn.uni-kiel.de) 4/94 - */ - -+/* October 2004, source code review by Thomas Biege <thomas@suse.de> */ -+ - #include "XpmI.h" - - #define MAXPRINTABLE 92 /* number of printable ascii chars -@@ -158,12 +160,10 @@ - /* function call in case of error, frees only locally allocated variables */ - #undef RETURN - #define RETURN(status) \ --{ \ -- if (pmap.pixelindex) XpmFree(pmap.pixelindex); \ -- if (pmap.pixels) XpmFree(pmap.pixels); \ -- if (colorTable) xpmFreeColorTable(colorTable, pmap.ncolors); \ -- return(status); \ --} -+do { \ -+ ErrorStatus = status; \ -+ goto error; \ -+} while(0) - - /* - * This function scans the given image and stores the found informations in -@@ -221,15 +221,15 @@ - else - cpp = 0; - -- if ((height > 0 && width >= SIZE_MAX / height) || -- width * height >= SIZE_MAX / sizeof(unsigned int)) -+ if ((height > 0 && width >= UINT_MAX / height) || -+ width * height >= UINT_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)) -+ if (pmap.size >= UINT_MAX / sizeof(Pixel)) - RETURN(XpmNoMemory); - - pmap.pixels = (Pixel *) XpmMalloc(sizeof(Pixel) * pmap.size); -@@ -286,7 +286,7 @@ - * get rgb values and a string of char, and possibly a name for each - * color - */ -- if (pmap.ncolors >= SIZE_MAX / sizeof(XpmColor)) -+ if (pmap.ncolors >= UINT_MAX / sizeof(XpmColor)) - RETURN(XpmNoMemory); - colorTable = (XpmColor *) XpmCalloc(pmap.ncolors, sizeof(XpmColor)); - if (!colorTable) -@@ -335,7 +335,7 @@ - - /* first get a character string */ - a = 0; -- if (cpp >= SIZE_MAX - 1) -+ if (cpp >= UINT_MAX - 1) - return (XpmNoMemory); - if (!(s = color->string = (char *) XpmMalloc(cpp + 1))) - return (XpmNoMemory); -@@ -428,7 +428,7 @@ - } - - /* first get character strings and rgb values */ -- if (ncolors >= SIZE_MAX / sizeof(XColor) || cpp >= SIZE_MAX - 1) -+ if (ncolors >= UINT_MAX / sizeof(XColor) || cpp >= UINT_MAX - 1) - return (XpmNoMemory); - xcolors = (XColor *) XpmMalloc(sizeof(XColor) * ncolors); - if (!xcolors) -@@ -585,7 +585,7 @@ - char *dst; - unsigned int *iptr; - char *data; -- int x, y, i; -+ unsigned int x, y, i; - int bits, depth, ibu, ibpp, offset; - unsigned long lbt; - Pixel pixel, px; -@@ -687,7 +687,7 @@ - unsigned char *addr; - unsigned char *data; - unsigned int *iptr; -- int x, y; -+ unsigned int x, y; - unsigned long lbt; - Pixel pixel; - int depth; -@@ -752,7 +752,7 @@ - unsigned char *addr; - unsigned char *data; - unsigned int *iptr; -- int x, y; -+ unsigned int x, y; - unsigned long lbt; - Pixel pixel; - int depth; -@@ -797,7 +797,7 @@ - { - unsigned int *iptr; - unsigned char *data; -- int x, y; -+ unsigned int x, y; - unsigned long lbt; - Pixel pixel; - int depth; -@@ -830,7 +830,7 @@ - int (*storeFunc) (); - { - unsigned int *iptr; -- int x, y; -+ unsigned int x, y; - char *data; - Pixel pixel; - int xoff, yoff, offset, bpl; -Nur in motif/lib/Xm: Xpms_popen.c. -diff -r -u motif.0194/lib/Xm/XpmWrFFrBuf.c motif/lib/Xm/XpmWrFFrBuf.c ---- motif.0194/lib/Xm/XpmWrFFrBuf.c 2000-05-10 16:02:01.000000000 +0200 -+++ motif/lib/Xm/XpmWrFFrBuf.c 2005-01-18 19:40:49.472496912 +0100 -@@ -33,6 +33,8 @@ - * Developed by Arnaud Le Hors * - \*****************************************************************************/ - -+/* October 2004, source code review by Thomas Biege <thomas@suse.de> */ -+ - #include "XpmI.h" - - int -@@ -50,7 +52,7 @@ - fcheck = fwrite(buffer, len, 1, fp); - fclose(fp); - if (fcheck != 1) -- return XpmOpenFailed; -+ return XpmOpenFailed; /* maybe use a better return value */ - - return XpmSuccess; - } -diff -r -u motif.0194/lib/Xm/XpmWrFFrI.c motif/lib/Xm/XpmWrFFrI.c ---- motif.0194/lib/Xm/XpmWrFFrI.c 2005-01-18 15:34:38.000000000 +0100 -+++ motif/lib/Xm/XpmWrFFrI.c 2005-01-18 19:43:51.397840056 +0100 -@@ -33,6 +33,8 @@ - * Developed by Arnaud Le Hors * - \*****************************************************************************/ - -+/* October 2004, source code review by Thomas Biege <thomas@suse.de> */ -+ - #include "XpmI.h" - #if !defined(NO_ZPIPE) && defined(WIN32) - # define popen _popen -@@ -93,7 +95,7 @@ - XpmInfo *info; - { - xpmData mdata; -- char *name, *dot, *s, new_name[BUFSIZ]; -+ char *name, *dot, *s, new_name[BUFSIZ] = {0}; - int ErrorStatus; - - /* open file to write */ -@@ -112,7 +114,8 @@ - #endif - /* let's try to make a valid C syntax name */ - if (dot = index(name, '.')) { -- strcpy(new_name, name); -+ strncpy(new_name, name, sizeof(new_name)); -+ + new_name[sizeof(new_name)-1] = 0; - /* change '.' to '_' */ - name = s = new_name; - while (dot = index(s, '.')) { -@@ -122,7 +125,8 @@ - } - if (dot = index(name, '-')) { - if (name != new_name) { -- strcpy(new_name, name); -+ strncpy(new_name, name, sizeof(new_name)); -+ new_name[sizeof(new_name)-1] = 0; - name = new_name; - } - /* change '-' to '_' */ -@@ -239,7 +243,7 @@ - unsigned int x, y, h; - - h = height - 1; -- if (cpp != 0 && width >= (SIZE_MAX - 3)/cpp) -+ if (cpp != 0 && width >= (UINT_MAX - 3)/cpp) - return XpmNoMemory; - p = buf = (char *) XpmMalloc(width * cpp + 3); - if (!buf) -@@ -291,6 +295,11 @@ - /* - * open the given file to be written as an xpmData which is returned - */ -+#ifndef NO_ZPIPE -+ FILE *s_popen(char *cmd, const char *type); -+#else -+# define s_popen popen -+#endif - static int - OpenWriteFile(filename, mdata) - char *filename; -@@ -306,16 +315,23 @@ - mdata->type = XPMFILE; - } else { - #ifndef NO_ZPIPE -- int len = strlen(filename); -+ size_t len = strlen(filename); -+ -+ if(len == 0 || -+ filename[0] == '/' || -+ strstr(filename, "../") != NULL || -+ filename[len-1] == '/') -+ return(XpmOpenFailed); -+ - if (len > 2 && !strcmp(".Z", filename + (len - 2))) { -- sprintf(buf, "compress > \"%s\"", filename); -- if (!(mdata->stream.file = popen(buf, "w"))) -+ snprintf(buf, sizeof(buf), "compress > \"%s\"", filename); -+ if (!(mdata->stream.file = s_popen(buf, "w"))) - return (XpmOpenFailed); - - mdata->type = XPMPIPE; - } else if (len > 3 && !strcmp(".gz", filename + (len - 3))) { -- sprintf(buf, "gzip -q > \"%s\"", filename); -- if (!(mdata->stream.file = popen(buf, "w"))) -+ snprintf(buf, sizeof(buf), "gzip -q > \"%s\"", filename); -+ if (!(mdata->stream.file = s_popen(buf, "w"))) - return (XpmOpenFailed); - - mdata->type = XPMPIPE; -@@ -346,7 +362,7 @@ - break; - #ifndef NO_ZPIPE - case XPMPIPE: -- pclose(mdata->stream.file); -+ fclose(mdata->stream.file); - break; - #endif - } diff --git a/x11-libs/openmotif/files/openmotif-2.2.3-CVE-2005-3964.patch b/x11-libs/openmotif/files/openmotif-2.2.3-CVE-2005-3964.patch deleted file mode 100644 index 2069eb4fad78..000000000000 --- a/x11-libs/openmotif/files/openmotif-2.2.3-CVE-2005-3964.patch +++ /dev/null @@ -1,29 +0,0 @@ ---- openMotif-2.2.3/clients/uil/UilDiags.c 2002-01-10 21:55:42.000000000 +0100 -+++ openMotif-2.2.3/clients/uil/UilDiags.c 2005-12-12 22:09:48.000000000 +0100 -@@ -293,12 +293,12 @@ void diag_issue_diagnostic - va_start(ap, l_start_column); - - #ifndef NO_MESSAGE_CATALOG -- vsprintf( msg_buffer, -+ vsnprintf( msg_buffer, 132, - catgets(uil_catd, UIL_SET1, msg_cat_table[ message_number ], - diag_rz_msg_table[ message_number ].ac_text), - ap ); - #else -- vsprintf( msg_buffer, -+ vsnprintf( msg_buffer, 132, - diag_rz_msg_table[ message_number ].ac_text, - ap ); - #endif -diff -rupN openMotif-2.2.3/clients/uil/UilSrcSrc.c openMotif-2.2.3-rc4/clients/uil/UilSrcSrc.c ---- openMotif-2.2.3/clients/uil/UilSrcSrc.c 2002-01-10 21:55:47.000000000 +0100 -+++ openMotif-2.2.3/clients/uil/UilSrcSrc.c 2005-12-12 22:10:46.000000000 +0100 -@@ -631,7 +631,7 @@ open_source_file( XmConst char - - /* place the file name in the expanded_name buffer */ - -- strcpy(buffer, c_file_name); -+ strncpy(buffer, c_file_name, 256); - - /* Determine if this is the main file or an include file. */ - diff --git a/x11-libs/openmotif/files/openmotif-2.2.3-Mwm.defaults b/x11-libs/openmotif/files/openmotif-2.2.3-Mwm.defaults deleted file mode 100644 index ea91b6fb8d86..000000000000 --- a/x11-libs/openmotif/files/openmotif-2.2.3-Mwm.defaults +++ /dev/null @@ -1,14 +0,0 @@ -Mwm*fontList: variable -Mwm*iconClick: False -Mwm*iconPlacement: top left -Mwm*moveOpaque: True -Mwm*rootButtonClick: True -Mwm*foreground: #000000 -Mwm*background: #B8B8C0 -Mwm*enableThinThickness: True -Mwm*enableEtchedInMenu: True -Mwm*menu*fontList: -adobe-helvetica-medium-r-*--*-120-*-*-*-*-*-* -Mwm*client*title*fontList: -adobe-helvetica-bold-r-*--*-100-*-*-*-*-*-* -Mwm*icon*fontList: -adobe-helvetica-bold-r-*--*-80-*-*-*-*-*-* -Mwm*feedback*fontList: -adobe-helvetica-bold-r-*--*-100-*-*-*-*-*-* -Mwm*multiClickTime: 300 diff --git a/x11-libs/openmotif/files/site.def b/x11-libs/openmotif/files/site.def deleted file mode 100644 index ee7667250687..000000000000 --- a/x11-libs/openmotif/files/site.def +++ /dev/null @@ -1,77 +0,0 @@ -XCOMM site: $TOG: site.def /main/12 1997/07/02 17:52:18 samborn $ - -/*************************************************************************** - * * - * X Consortium In-House Build Parameters * - * Use at Your Own Risk * - * * - ***************************************************************************/ - -#ifndef SiteIConfigFiles -# define SiteIConfigFiles $(IRULESRC)/host.def -# define LocalConfigFiles host.def -#endif - -#ifdef BeforeVendorCF - -# include <host.def> - -/* We will import x11. */ -# define ImportX11 YES - -# ifndef TopLevelProject -# define TopLevelProject Motif -# endif - -/* On systems where cpp doesn't expand correctly macros in include directives - * the two following macros need to be defined directly (accordingly to the - * TopLevelProject macro defined above). - */ -# if defined(SunArchitecture) || defined(AIXArchitecture) \ - || defined(USLArchitecture) || defined(UXPArchitecture) -# ifndef ProjectRulesFile -# define ProjectRulesFile <Motif.rules> -# endif -# ifndef ProjectTmplFile -# define ProjectTmplFile <Motif.tmpl> -# endif -# endif - -# ifdef AlphaArchitecture -# define HasDECCplusplus YES -# endif - -# ifdef HPArchitecture -# define HasHPCplusplus YES -# endif - -# if defined(SGIArchitecture) -# define MipsN32Architecture YES -# endif - -# ifdef SunArchitecture -# define HasSunCplusplus YES -# endif - -# if defined(UXPArchitecture) || defined(USLArchitecture) \ - || defined(AIXArchitecture) -# define HasCplusplus YES -# endif - -#define LinuxDistribution LinuxUnknown -#define i386Architecture YES -#endif /* BeforeVendorCF */ - -#ifdef AfterVendorCF - -# define X11ProjectRoot /usr/X11R6 -# define ProjectRoot /usr/X11R6 -# define VirtualBindingsPath /usr/X11R6/lib/bindings - -# undef DefaultUserPath -# define DefaultUserPath /bin:/usr/bin:$(BINDIR):/usr/ucb:/usr/local/bin:/usr/local/bin/mh:/site/local/scripts - -#endif /* AfterVendorCF */ -#define YaccCmd bison --yacc - - diff --git a/x11-libs/openmotif/files/site.def.1 b/x11-libs/openmotif/files/site.def.1 deleted file mode 100644 index ee7667250687..000000000000 --- a/x11-libs/openmotif/files/site.def.1 +++ /dev/null @@ -1,77 +0,0 @@ -XCOMM site: $TOG: site.def /main/12 1997/07/02 17:52:18 samborn $ - -/*************************************************************************** - * * - * X Consortium In-House Build Parameters * - * Use at Your Own Risk * - * * - ***************************************************************************/ - -#ifndef SiteIConfigFiles -# define SiteIConfigFiles $(IRULESRC)/host.def -# define LocalConfigFiles host.def -#endif - -#ifdef BeforeVendorCF - -# include <host.def> - -/* We will import x11. */ -# define ImportX11 YES - -# ifndef TopLevelProject -# define TopLevelProject Motif -# endif - -/* On systems where cpp doesn't expand correctly macros in include directives - * the two following macros need to be defined directly (accordingly to the - * TopLevelProject macro defined above). - */ -# if defined(SunArchitecture) || defined(AIXArchitecture) \ - || defined(USLArchitecture) || defined(UXPArchitecture) -# ifndef ProjectRulesFile -# define ProjectRulesFile <Motif.rules> -# endif -# ifndef ProjectTmplFile -# define ProjectTmplFile <Motif.tmpl> -# endif -# endif - -# ifdef AlphaArchitecture -# define HasDECCplusplus YES -# endif - -# ifdef HPArchitecture -# define HasHPCplusplus YES -# endif - -# if defined(SGIArchitecture) -# define MipsN32Architecture YES -# endif - -# ifdef SunArchitecture -# define HasSunCplusplus YES -# endif - -# if defined(UXPArchitecture) || defined(USLArchitecture) \ - || defined(AIXArchitecture) -# define HasCplusplus YES -# endif - -#define LinuxDistribution LinuxUnknown -#define i386Architecture YES -#endif /* BeforeVendorCF */ - -#ifdef AfterVendorCF - -# define X11ProjectRoot /usr/X11R6 -# define ProjectRoot /usr/X11R6 -# define VirtualBindingsPath /usr/X11R6/lib/bindings - -# undef DefaultUserPath -# define DefaultUserPath /bin:/usr/bin:$(BINDIR):/usr/ucb:/usr/local/bin:/usr/local/bin/mh:/site/local/scripts - -#endif /* AfterVendorCF */ -#define YaccCmd bison --yacc - - |