*** xpdf-3.02.orig/xpdf/Stream.cc	Tue Feb 27 14:05:52 2007
--- xpdf-3.02/xpdf/Stream.cc	Thu Jul 26 14:44:43 2007
***************
*** 410,424 ****
    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) {
      return;
    }
    predLine = (Guchar *)gmalloc(rowBytes);
--- 410,422 ----
    ok = gFalse;
  
    nVals = width * nComps;
    pixBytes = (nComps * nBits + 7) >> 3;
    rowBytes = ((nVals * nBits + 7) >> 3) + pixBytes;
!   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);
