diff options
Diffstat (limited to 'src/Attrib.c')
-rw-r--r-- | src/Attrib.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/src/Attrib.c b/src/Attrib.c index 04b843b..028c2cb 100644 --- a/src/Attrib.c +++ b/src/Attrib.c @@ -32,13 +32,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, int ncolors, +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 @@ -46,11 +48,14 @@ LFUNC(FreeOldColorTable, void, (XpmColor **colorTable, int ncolors)); static int CreateOldColorTable(ct, ncolors, oldct) XpmColor *ct; - int ncolors; + unsigned int ncolors; XpmColor ***oldct; { XpmColor **colorTable, **color; - int a; + unsigned int a; + + if (ncolors >= UINT_MAX / sizeof(XpmColor *)) + return XpmNoMemory; colorTable = (XpmColor **) XpmMalloc(ncolors * sizeof(XpmColor *)); if (!colorTable) { @@ -66,9 +71,9 @@ CreateOldColorTable(ct, ncolors, oldct) static void FreeOldColorTable(colorTable, ncolors) XpmColor **colorTable; - int ncolors; + unsigned int ncolors; { - int a, b; + unsigned int a, b; XpmColor **color; char **sptr; @@ -119,7 +124,7 @@ XpmFreeExtensions(extensions, nextensions) 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); |