diff -Naur cups-1.2.12/pdftops/Stream.cxx cups-1.2.12-fixed/pdftops/Stream.cxx --- cups-1.2.12/pdftops/Stream.cxx 2006-02-13 04:08:11.000000000 +0100 +++ cups-1.2.12-fixed/pdftops/Stream.cxx 2007-08-03 19:10:02.000000000 +0200 @@ -411,15 +411,13 @@ ok = gFalse; nVals = width * nComps; - if (width <= 0 || nComps <= 0 || nBits <= 0 || - nComps >= INT_MAX / nBits || - width >= INT_MAX / nComps / nBits || - nVals * nBits + 7 < 0) { - return; - } pixBytes = (nComps * nBits + 7) >> 3; rowBytes = ((nVals * nBits + 7) >> 3) + pixBytes; - if (rowBytes <= 0) { + if (width <= 0 || nComps <= 0 || nBits <= 0 || + nComps > gfxColorMaxComps || + nBits > 16 || + width >= INT_MAX / nComps || // check for overflow in nVals + nVals >= (INT_MAX - 7) / nBits) { // check for overflow in rowBytes return; } predLine = (Guchar *)gmalloc(rowBytes);