if (cpp >= SIZE_MAX - 1)
if (cpp >= UINT_MAX - 1)
ScanTransparentColor(color, cpp, attributes)    XpmColor *color;    unsigned int cpp;    XpmAttributes *attributes;{    char *s;    unsigned int a, b, c;    /* 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];    for (b = 1; b < cpp; b++, s++)	*s = printable[c = ((a - c) / MAXPRINTABLE) % MAXPRINTABLE];    *s = '\0';    /* then retreive related info from the attributes if any */    if (attributes && (attributes->valuemask & XpmColorTable/* 3.2 backward compatibility code */		       || attributes->valuemask & XpmInfos)/* end 3.2 bc */	&& attributes->mask_pixel != XpmUndefPixel) {	unsigned int key;	char **defaults = (char **) color;	char **mask_defaults;/* 3.2 backward compatibility code */	if (attributes->valuemask & XpmColorTable)/* end 3.2 bc */	    mask_defaults = (char **) (		attributes->colorTable + attributes->mask_pixel);/* 3.2 backward compatibility code */	else	    mask_defaults = (char **)		((XpmColor **) attributes->colorTable)[attributes->mask_pixel];/* end 3.2 bc */	for (key = 1; key <= NKEYS; key++) {	    if ((s = mask_defaults[key])) {		defaults[key] = (char *) xpmstrdup(s);		if (!defaults[key])		    return (XpmNoMemory);	    }	}    } else {	color->c_color = (char *) xpmstrdup(TRANSPARENT_COLOR);	if (!color->c_color)	    return (XpmNoMemory);    }    return (XpmSuccess);}