pkgsrc-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[pkgsrc/trunk]: pkgsrc/print/cups Sync pdftops with xpdf 3.01pl2, fixing at l...



details:   https://anonhg.NetBSD.org/pkgsrc/rev/86ebc953f2ac
branches:  trunk
changeset: 510171:86ebc953f2ac
user:      joerg <joerg%pkgsrc.org@localhost>
date:      Wed Mar 29 17:22:46 2006 +0000

description:
Sync pdftops with xpdf 3.01pl2, fixing at least two possible
integer overflows. Bump revision.

diffstat:

 print/cups/Makefile         |    4 +-
 print/cups/distinfo         |    8 +-
 print/cups/patches/patch-ap |   21 ++++++-
 print/cups/patches/patch-be |  116 +++++++++++++++++++++++++++++--------------
 print/cups/patches/patch-bf |   15 ++++-
 5 files changed, 115 insertions(+), 49 deletions(-)

diffs (truncated from 321 to 300 lines):

diff -r c4596e13cca0 -r 86ebc953f2ac print/cups/Makefile
--- a/print/cups/Makefile       Wed Mar 29 17:20:09 2006 +0000
+++ b/print/cups/Makefile       Wed Mar 29 17:22:46 2006 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.107 2006/02/15 19:06:47 joerg Exp $
+# $NetBSD: Makefile,v 1.108 2006/03/29 17:22:46 joerg Exp $
 #
 # The CUPS author is very good about taking back changes into the main
 # CUPS distribution.  The correct place to send patches or bug-fixes is:
@@ -6,7 +6,7 @@
 
 DISTNAME=      cups-${DIST_VERS}-source
 PKGNAME=       cups-${VERS}
-PKGREVISION=   7
+PKGREVISION=   8
 BASE_VERS=     1.1.23
 DIST_VERS=     ${BASE_VERS}
 VERS=          ${DIST_VERS:S/-/./g}
diff -r c4596e13cca0 -r 86ebc953f2ac print/cups/distinfo
--- a/print/cups/distinfo       Wed Mar 29 17:20:09 2006 +0000
+++ b/print/cups/distinfo       Wed Mar 29 17:22:46 2006 +0000
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.38 2006/02/16 15:52:15 yyamano Exp $
+$NetBSD: distinfo,v 1.39 2006/03/29 17:22:46 joerg Exp $
 
 SHA1 (cups-1.1.23-source.tar.bz2) = 32d5bfb44c4edc1b54ccb014b5a44499295c6c5c
 RMD160 (cups-1.1.23-source.tar.bz2) = 255ec4c22422b14f2367d69f3ec7e590dc46bea5
@@ -13,10 +13,10 @@
 SHA1 (patch-ah) = 1ef58b7e1dfcbd8aabb9e822d30f995b3d653ea4
 SHA1 (patch-an) = 8eb0f80067839d3d112d93e08cb8ad6854fa2b4c
 SHA1 (patch-ao) = c4c8f833cf4a09a686a338df6c209cebec36c6ef
-SHA1 (patch-ap) = 81b8213e16f875b22d0684d0c06dfe75af11dcb4
+SHA1 (patch-ap) = 2351844f81a561d69cd02a1e83e30f3c9ee33f5f
 SHA1 (patch-at) = aa36ec591164675b889d2cf32e4d754e9b6db94f
 SHA1 (patch-au) = ab43911c1b27b250a257c67d1d34066237e4da98
 SHA1 (patch-av) = 33437f71e0b6443b172246f1962f9d2eebbd8f11
 SHA1 (patch-aw) = f9a83423eac1a631b67e10911e0ef9e111da9b84
-SHA1 (patch-be) = 98f0c2d060df5f6bd95129d80b5ba29c276a3c67
-SHA1 (patch-bf) = 50d42bcdf3b103e2c5828baa2661ec1c87c7da1c
+SHA1 (patch-be) = 85c99298a6eca8f73c81298624d98b66f929aac2
+SHA1 (patch-bf) = a25cbddf47dc9637ccce2a8e40c6541320df4a8a
diff -r c4596e13cca0 -r 86ebc953f2ac print/cups/patches/patch-ap
--- a/print/cups/patches/patch-ap       Wed Mar 29 17:20:09 2006 +0000
+++ b/print/cups/patches/patch-ap       Wed Mar 29 17:22:46 2006 +0000
@@ -1,4 +1,4 @@
-$NetBSD: patch-ap,v 1.6 2006/02/15 19:06:13 joerg Exp $
+$NetBSD: patch-ap,v 1.7 2006/03/29 17:22:46 joerg Exp $
 
 --- pdftops/JBIG2Stream.cxx.orig       2006-02-13 22:20:31.000000000 +0100
 +++ pdftops/JBIG2Stream.cxx
@@ -43,7 +43,22 @@
      return;
    }
    data = (Guchar *)grealloc(data, newH * line);
-@@ -2576,6 +2587,14 @@ void JBIG2Stream::readHalftoneRegionSeg(
+@@ -2565,6 +2576,14 @@ void JBIG2Stream::readHalftoneRegionSeg(
+       !readUWord(&stepX) || !readUWord(&stepY)) {
+     goto eofError;
+   }
++   if (w == 0 || h == 0 || w >= INT_MAX / h) {
++     error(getPos(), "Bad bitmap size in JBIG2 halftone segment");
++     return;
++   }
++   if (gridH == 0 || gridW >= INT_MAX / gridH) {
++     error(getPos(), "Bad grid size in JBIG2 halftone segment");
++     return;
++   }
+ 
+   // get pattern dictionary
+   if (nRefSegs != 1) {
+@@ -2576,6 +2595,14 @@ void JBIG2Stream::readHalftoneRegionSeg(
      error(getPos(), "Bad symbol dictionary reference in JBIG2 halftone segment");
      return;
    }
@@ -58,7 +73,7 @@
    patternDict = (JBIG2PatternDict *)seg;
    bpp = 0;
    i = 1;
-@@ -2763,6 +2782,9 @@ JBIG2Bitmap *JBIG2Stream::readGenericBit
+@@ -2763,6 +2790,9 @@ JBIG2Bitmap *JBIG2Stream::readGenericBit
    int code1, code2, code3;
    int x, y, a0, pix, i, refI, codingI;
  
diff -r c4596e13cca0 -r 86ebc953f2ac print/cups/patches/patch-be
--- a/print/cups/patches/patch-be       Wed Mar 29 17:20:09 2006 +0000
+++ b/print/cups/patches/patch-be       Wed Mar 29 17:22:46 2006 +0000
@@ -1,38 +1,34 @@
-$NetBSD: patch-be,v 1.2 2006/02/15 19:06:13 joerg Exp $
+$NetBSD: patch-be,v 1.3 2006/03/29 17:22:46 joerg Exp $
 
 --- pdftops/Stream.cxx.orig    2004-02-02 17:41:09.000000000 -0500
 +++ pdftops/Stream.cxx
-@@ -15,6 +15,7 @@
+@@ -12,6 +12,7 @@
+ #pragma implementation
+ #endif
+ 
++#include <limits.h>
  #include <stdio.h>
  #include <stdlib.h>
  #include <stddef.h>
-+#include <limits.h>
- #ifndef WIN32
- #include <unistd.h>
- #endif
-@@ -409,13 +410,30 @@ StreamPredictor::StreamPredictor(Stream 
+@@ -409,13 +410,26 @@ StreamPredictor::StreamPredictor(Stream 
    width = widthA;
    nComps = nCompsA;
    nBits = nBitsA;
 +  predLine = NULL;
 +  ok = gFalse;
-+
+ 
+   nVals = width * nComps;
 +  if (width <= 0 || nComps <= 0 || nBits <= 0 ||
 +      nComps >= INT_MAX / nBits ||
-+      width >= INT_MAX / nComps / nBits) {
-+    return;
-+  }
- 
-   nVals = width * nComps;
-+  if (nVals * nBits + 7 <= 0) {
++      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 (rowBytes <= 0) {
 +    return;
 +  }
-+
    predLine = (Guchar *)gmalloc(rowBytes);
    memset(predLine, 0, rowBytes);
    predIdx = rowBytes;
@@ -41,80 +37,126 @@
  }
  
  StreamPredictor::~StreamPredictor() {
-@@ -991,6 +1009,10 @@ LZWStream::LZWStream(Stream *strA, int p
+@@ -991,6 +1005,10 @@ LZWStream::LZWStream(Stream *strA, int p
      FilterStream(strA) {
    if (predictor != 1) {
      pred = new StreamPredictor(this, predictor, columns, colors, bits);
-+    if (!pred->isOk()) {
++    if (!pred->isOK()) {
 +      delete pred;
 +      pred = NULL;
 +    }
    } else {
      pred = NULL;
    }
-@@ -1239,6 +1261,9 @@ CCITTFaxStream::CCITTFaxStream(Stream *s
+@@ -1239,6 +1257,9 @@ CCITTFaxStream::CCITTFaxStream(Stream *s
    endOfLine = endOfLineA;
    byteAlign = byteAlignA;
    columns = columnsA;
-+  if (columns + 3 < 1 || columns + 4 < 1 || columns < 1) {
-+    columns = 1;
++  if (columns + 4 <= 0) {
++    columns = INT_MAX - 4;
 +  }
    rows = rowsA;
    endOfBlock = endOfBlockA;
    black = blackA;
-@@ -2891,6 +2916,10 @@ GBool DCTStream::readBaselineSOF() {
+@@ -2891,6 +2912,11 @@ GBool DCTStream::readBaselineSOF() {
    height = read16();
    width = read16();
    numComps = str->getChar();
 +  if (numComps <= 0 || numComps > 4) {
-+    error(getPos(), "Bad number of components %d in DCT stream", numComps);
++    error(getPos(), "Bad number of components in DCT stream", prec);
++    numComps = 0;
 +    return gFalse;
 +  }
    if (prec != 8) {
      error(getPos(), "Bad DCT precision %d", prec);
      return gFalse;
-@@ -2917,6 +2946,10 @@ GBool DCTStream::readProgressiveSOF() {
+@@ -2917,6 +2943,11 @@ GBool DCTStream::readProgressiveSOF() {
    height = read16();
    width = read16();
    numComps = str->getChar();
 +  if (numComps <= 0 || numComps > 4) {
-+    error(getPos(), "Bad number of components %d in DCT stream", numComps);
++    error(getPos(), "Bad number of components in DCT stream", prec);
++    numComps = 0;
 +    return gFalse;
 +  }
    if (prec != 8) {
      error(getPos(), "Bad DCT precision %d", prec);
      return gFalse;
-@@ -2939,6 +2972,10 @@ GBool DCTStream::readScanInfo() {
+@@ -2939,6 +2970,11 @@ GBool DCTStream::readScanInfo() {
  
    length = read16() - 2;
    scanInfo.numComps = str->getChar();
 +  if (scanInfo.numComps <= 0 || scanInfo.numComps > 4) {
 +    error(getPos(), "Bad number of components in DCT stream");
++    scanInfo.numComps = 0;
 +    return gFalse;
 +  }
    --length;
    if (length != 2 * scanInfo.numComps + 3) {
      error(getPos(), "Bad DCT scan info block");
-@@ -3013,12 +3050,12 @@ GBool DCTStream::readHuffmanTables() {
+@@ -2980,22 +3016,32 @@ GBool DCTStream::readScanInfo() {
+ }
+ 
+ GBool DCTStream::readQuantTables() {
+-  int length;
+-  int i;
+-  int index;
++  int length, prec, i, index;
+ 
+   length = read16() - 2;
    while (length > 0) {
      index = str->getChar();
-     --length;
--    if ((index & 0x0f) >= 4) {
-+    if ((index & 0x0f) >= 4 || (index & ~0x10) < 0) {
-       error(getPos(), "Bad DCT Huffman table");
+-    if ((index & 0xf0) || index >= 4) {
++    prec = (index >> 4) & 0x0f;
++    index &= 0x0f;
++    if (prec > 1 || index >= 4) {
+       error(getPos(), "Bad DCT quantization table");
        return gFalse;
      }
-     if (index & 0x10) {
--      index &= 0x0f;
-+      index &= 0x03;
-       if (index >= numACHuffTables)
+-    if (index == numQuantTables)
++    if (index == numQuantTables) {
+       numQuantTables = index + 1;
+-    for (i = 0; i < 64; ++i)
+-      quantTables[index][dctZigZag[i]] = str->getChar();
+-    length -= 65;
++    }
++    for (i = 0; i < 64; ++i) {
++      if (prec) {
++      quantTables[index][dctZigZag[i]] = read16();
++      } else {
++      quantTables[index][dctZigZag[i]] = str->getChar();
++      }
++    }
++    if (prec) {
++      length -= 129;
++    } else {
++      length -= 65;
++    }
+   }
+   return gTrue;
+ }
+@@ -3023,6 +3069,7 @@ GBool DCTStream::readHuffmanTables() {
        numACHuffTables = index+1;
        tbl = &acHuffTables[index];
-@@ -3249,6 +3286,10 @@ FlateStream::FlateStream(Stream *strA, i
+     } else {
++      index &= 0x0f;
+       if (index >= numDCHuffTables)
+       numDCHuffTables = index+1;
+       tbl = &dcHuffTables[index];
+@@ -3136,7 +3183,7 @@ int DCTStream::readMarker() {
+   do {
+     do {
+       c = str->getChar();
+-    } while (c != 0xff);
++    } while (c != 0xff && c != EOF);
+     do {
+       c = str->getChar();
+     } while (c == 0xff);
+@@ -3249,6 +3296,10 @@ FlateStream::FlateStream(Stream *strA, i
      FilterStream(strA) {
    if (predictor != 1) {
      pred = new StreamPredictor(this, predictor, columns, colors, bits);
-+    if (!pred->isOk()) {
++    if (!pred->isOK()) {
 +      delete pred;
 +      pred = NULL;
 +    }
diff -r c4596e13cca0 -r 86ebc953f2ac print/cups/patches/patch-bf
--- a/print/cups/patches/patch-bf       Wed Mar 29 17:20:09 2006 +0000
+++ b/print/cups/patches/patch-bf       Wed Mar 29 17:22:46 2006 +0000
@@ -1,4 +1,4 @@
-$NetBSD: patch-bf,v 1.1 2005/12/17 04:22:55 jlam Exp $
+$NetBSD: patch-bf,v 1.2 2006/03/29 17:22:46 joerg Exp $
 
 --- pdftops/Stream.h.orig      2004-02-02 17:41:09.000000000 -0500
 +++ pdftops/Stream.h
@@ -6,7 +6,7 @@
  
    ~StreamPredictor();
  
-+  GBool isOk() { return ok; }
++  GBool isOK() { return ok; }



Home | Main Index | Thread Index | Old Index