Magellan Linux

Annotation of /trunk/xpdf/patches/xpdf-3.01pl1.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 153 - (hide annotations) (download)
Tue May 8 20:52:56 2007 UTC (17 years, 1 month ago) by niro
File size: 4936 byte(s)
-import

1 niro 153 diff -c -r xpdf-3.01-orig/xpdf/JPXStream.cc xpdf-3.01/xpdf/JPXStream.cc
2     *** xpdf-3.01-orig/xpdf/JPXStream.cc Tue Aug 16 22:34:31 2005
3     --- xpdf-3.01/xpdf/JPXStream.cc Thu Nov 3 16:50:39 2005
4     ***************
5     *** 783,789 ****
6     int segType;
7     GBool haveSIZ, haveCOD, haveQCD, haveSOT;
8     Guint precinctSize, style;
9     ! Guint segLen, capabilities, comp, i, j, r;
10    
11     //----- main header
12     haveSIZ = haveCOD = haveQCD = haveSOT = gFalse;
13     --- 783,789 ----
14     int segType;
15     GBool haveSIZ, haveCOD, haveQCD, haveSOT;
16     Guint precinctSize, style;
17     ! Guint segLen, capabilities, nTiles, comp, i, j, r;
18    
19     //----- main header
20     haveSIZ = haveCOD = haveQCD = haveSOT = gFalse;
21     ***************
22     *** 818,825 ****
23     / img.xTileSize;
24     img.nYTiles = (img.ySize - img.yTileOffset + img.yTileSize - 1)
25     / img.yTileSize;
26     ! img.tiles = (JPXTile *)gmallocn(img.nXTiles * img.nYTiles,
27     ! sizeof(JPXTile));
28     for (i = 0; i < img.nXTiles * img.nYTiles; ++i) {
29     img.tiles[i].tileComps = (JPXTileComp *)gmallocn(img.nComps,
30     sizeof(JPXTileComp));
31     --- 818,830 ----
32     / img.xTileSize;
33     img.nYTiles = (img.ySize - img.yTileOffset + img.yTileSize - 1)
34     / img.yTileSize;
35     ! nTiles = img.nXTiles * img.nYTiles;
36     ! // check for overflow before allocating memory
37     ! if (nTiles == 0 || nTiles / img.nXTiles != img.nYTiles) {
38     ! error(getPos(), "Bad tile count in JPX SIZ marker segment");
39     ! return gFalse;
40     ! }
41     ! img.tiles = (JPXTile *)gmallocn(nTiles, sizeof(JPXTile));
42     for (i = 0; i < img.nXTiles * img.nYTiles; ++i) {
43     img.tiles[i].tileComps = (JPXTileComp *)gmallocn(img.nComps,
44     sizeof(JPXTileComp));
45     diff -c -r xpdf-3.01-orig/xpdf/Stream.cc xpdf-3.01/xpdf/Stream.cc
46     *** xpdf-3.01-orig/xpdf/Stream.cc Tue Aug 16 22:34:31 2005
47     --- xpdf-3.01/xpdf/Stream.cc Thu Nov 3 16:50:39 2005
48     ***************
49     *** 401,418 ****
50    
51     StreamPredictor::StreamPredictor(Stream *strA, int predictorA,
52     int widthA, int nCompsA, int nBitsA) {
53     str = strA;
54     predictor = predictorA;
55     width = widthA;
56     nComps = nCompsA;
57     nBits = nBitsA;
58    
59     nVals = width * nComps;
60     pixBytes = (nComps * nBits + 7) >> 3;
61     ! rowBytes = ((nVals * nBits + 7) >> 3) + pixBytes;
62     predLine = (Guchar *)gmalloc(rowBytes);
63     memset(predLine, 0, rowBytes);
64     predIdx = rowBytes;
65     }
66    
67     StreamPredictor::~StreamPredictor() {
68     --- 401,433 ----
69    
70     StreamPredictor::StreamPredictor(Stream *strA, int predictorA,
71     int widthA, int nCompsA, int nBitsA) {
72     + int totalBits;
73     +
74     str = strA;
75     predictor = predictorA;
76     width = widthA;
77     nComps = nCompsA;
78     nBits = nBitsA;
79     + predLine = NULL;
80     + ok = gFalse;
81    
82     nVals = width * nComps;
83     + totalBits = nVals * nBits;
84     + if (totalBits == 0 ||
85     + (totalBits / nBits) / nComps != width ||
86     + totalBits + 7 < 0) {
87     + return;
88     + }
89     pixBytes = (nComps * nBits + 7) >> 3;
90     ! rowBytes = ((totalBits + 7) >> 3) + pixBytes;
91     ! if (rowBytes < 0) {
92     ! return;
93     ! }
94     predLine = (Guchar *)gmalloc(rowBytes);
95     memset(predLine, 0, rowBytes);
96     predIdx = rowBytes;
97     +
98     + ok = gTrue;
99     }
100    
101     StreamPredictor::~StreamPredictor() {
102     ***************
103     *** 1004,1009 ****
104     --- 1019,1028 ----
105     FilterStream(strA) {
106     if (predictor != 1) {
107     pred = new StreamPredictor(this, predictor, columns, colors, bits);
108     + if (!pred->isOk()) {
109     + delete pred;
110     + pred = NULL;
111     + }
112     } else {
113     pred = NULL;
114     }
115     ***************
116     *** 2899,2904 ****
117     --- 2918,2931 ----
118     height = read16();
119     width = read16();
120     numComps = str->getChar();
121     + if (numComps <= 0 || numComps > 4) {
122     + error(getPos(), "Bad number of components in DCT stream", prec);
123     + return gFalse;
124     + }
125     + if (numComps <= 0 || numComps > 4) {
126     + error(getPos(), "Bad number of components in DCT stream", prec);
127     + return gFalse;
128     + }
129     if (prec != 8) {
130     error(getPos(), "Bad DCT precision %d", prec);
131     return gFalse;
132     ***************
133     *** 3827,3832 ****
134     --- 3854,3863 ----
135     FilterStream(strA) {
136     if (predictor != 1) {
137     pred = new StreamPredictor(this, predictor, columns, colors, bits);
138     + if (!pred->isOk()) {
139     + delete pred;
140     + pred = NULL;
141     + }
142     } else {
143     pred = NULL;
144     }
145     diff -c -r xpdf-3.01-orig/xpdf/Stream.h xpdf-3.01/xpdf/Stream.h
146     *** xpdf-3.01-orig/xpdf/Stream.h Tue Aug 16 22:34:31 2005
147     --- xpdf-3.01/xpdf/Stream.h Thu Nov 3 16:50:39 2005
148     ***************
149     *** 232,237 ****
150     --- 232,239 ----
151    
152     ~StreamPredictor();
153    
154     + GBool isOk() { return ok; }
155     +
156     int lookChar();
157     int getChar();
158    
159     ***************
160     *** 249,254 ****
161     --- 251,257 ----
162     int rowBytes; // bytes per line
163     Guchar *predLine; // line buffer
164     int predIdx; // current index in predLine
165     + GBool ok;
166     };
167    
168     //------------------------------------------------------------------------