Magellan Linux

Annotation of /trunk/libjasper/patches/libjasper-1.900.1-fixes-20081208.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 831 - (hide annotations) (download)
Mon Jun 8 18:08:46 2009 UTC (14 years, 11 months ago) by niro
File size: 42347 byte(s)
patches for jasper

1 niro 831 diff -Naur jasper-1.900.1/acaux/install-sh jasper.fixed/acaux/install-sh
2     --- jasper-1.900.1/acaux/install-sh 2007-01-19 22:43:08.000000000 +0100
3     +++ jasper.fixed/acaux/install-sh 2008-12-08 21:02:03.000000000 +0100
4     @@ -192,7 +192,7 @@
5    
6     if [ x"$dir_arg" != x ]
7     then
8     - $doit $instcmd $dst &&
9     + { test -d $dst || $doit $instcmd $dst; } &&
10    
11     if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else : ; fi &&
12     if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else : ; fi &&
13     diff -Naur jasper-1.900.1/acaux/ltmain.sh jasper.fixed/acaux/ltmain.sh
14     --- jasper-1.900.1/acaux/ltmain.sh 2007-01-19 22:54:42.000000000 +0100
15     +++ jasper.fixed/acaux/ltmain.sh 2008-12-08 21:02:03.000000000 +0100
16     @@ -57,6 +57,13 @@
17     else
18     case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
19     fi
20     +# Same for EGREP, and just to be sure, do LTCC as well
21     +if test "x$EGREP" = x ; then
22     + EGREP=egrep
23     +fi
24     +if test "x$LTCC" = x ; then
25     + LTCC=${CC-gcc}
26     +fi
27    
28     # Check that we have a working $echo.
29     if test "X$1" = X--no-reexec; then
30     @@ -5649,9 +5656,53 @@
31     $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
32     exit $EXIT_FAILURE
33     fi
34     - newdependency_libs="$newdependency_libs $libdir/$name"
35     + if test "x$EGREP" = x ; then
36     + EGREP=egrep
37     + fi
38     + # We do not want portage's install root ($D) present. Check only for
39     + # this if the .la is being installed.
40     + if test "$installed" = yes && test "$D"; then
41     + eval mynewdependency_lib=`echo "$libdir/$name" |sed -e "s:$D:/:g" -e 's:/\+:/:g'`
42     + else
43     + mynewdependency_lib="$libdir/$name"
44     + fi
45     + # Do not add duplicates
46     + if test "$mynewdependency_lib"; then
47     + my_little_ninja_foo_1=`echo $newdependency_libs |$EGREP -e "$mynewdependency_lib"`
48     + if test -z "$my_little_ninja_foo_1"; then
49     + newdependency_libs="$newdependency_libs $mynewdependency_lib"
50     + fi
51     + fi
52     + ;;
53     + *)
54     + if test "$installed" = yes; then
55     + # Rather use S=WORKDIR if our version of portage supports it.
56     + # This is because some ebuild (gcc) do not use $S as buildroot.
57     + if test "$PWORKDIR"; then
58     + S="$PWORKDIR"
59     + fi
60     + # We do not want portage's build root ($S) present.
61     + my_little_ninja_foo_2=`echo $deplib |$EGREP -e "$S"`
62     + # We do not want portage's install root ($D) present.
63     + my_little_ninja_foo_3=`echo $deplib |$EGREP -e "$D"`
64     + if test -n "$my_little_ninja_foo_2" && test "$S"; then
65     + mynewdependency_lib=""
66     + elif test -n "$my_little_ninja_foo_3" && test "$D"; then
67     + eval mynewdependency_lib=`echo "$deplib" |sed -e "s:$D:/:g" -e 's:/\+:/:g'`
68     + else
69     + mynewdependency_lib="$deplib"
70     + fi
71     + else
72     + mynewdependency_lib="$deplib"
73     + fi
74     + # Do not add duplicates
75     + if test "$mynewdependency_lib"; then
76     + my_little_ninja_foo_4=`echo $newdependency_libs |$EGREP -e "$mynewdependency_lib"`
77     + if test -z "$my_little_ninja_foo_4"; then
78     + newdependency_libs="$newdependency_libs $mynewdependency_lib"
79     + fi
80     + fi
81     ;;
82     - *) newdependency_libs="$newdependency_libs $deplib" ;;
83     esac
84     done
85     dependency_libs="$newdependency_libs"
86     @@ -5703,6 +5754,10 @@
87     case $host,$output,$installed,$module,$dlname in
88     *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
89     esac
90     + # Do not add duplicates
91     + if test "$installed" = yes && test "$D"; then
92     + install_libdir=`echo "$install_libdir" |sed -e "s:$D:/:g" -e 's:/\+:/:g'`
93     + fi
94     $echo > $output "\
95     # $outputname - a libtool library file
96     # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
97     diff -Naur jasper-1.900.1/src/libjasper/base/jas_cm.c jasper.fixed/src/libjasper/base/jas_cm.c
98     --- jasper-1.900.1/src/libjasper/base/jas_cm.c 2007-01-19 22:43:05.000000000 +0100
99     +++ jasper.fixed/src/libjasper/base/jas_cm.c 2008-12-08 21:02:03.000000000 +0100
100     @@ -704,8 +704,7 @@
101     {
102     jas_cmpxform_t **p;
103     assert(n >= pxformseq->numpxforms);
104     - p = (!pxformseq->pxforms) ? jas_malloc(n * sizeof(jas_cmpxform_t *)) :
105     - jas_realloc(pxformseq->pxforms, n * sizeof(jas_cmpxform_t *));
106     + p = jas_realloc2(pxformseq->pxforms, n, sizeof(jas_cmpxform_t *));
107     if (!p) {
108     return -1;
109     }
110     @@ -889,13 +888,13 @@
111     jas_cmshapmatlut_cleanup(lut);
112     if (curv->numents == 0) {
113     lut->size = 2;
114     - if (!(lut->data = jas_malloc(lut->size * sizeof(jas_cmreal_t))))
115     + if (!(lut->data = jas_alloc2(lut->size, sizeof(jas_cmreal_t))))
116     goto error;
117     lut->data[0] = 0.0;
118     lut->data[1] = 1.0;
119     } else if (curv->numents == 1) {
120     lut->size = 256;
121     - if (!(lut->data = jas_malloc(lut->size * sizeof(jas_cmreal_t))))
122     + if (!(lut->data = jas_alloc2(lut->size, sizeof(jas_cmreal_t))))
123     goto error;
124     gamma = curv->ents[0] / 256.0;
125     for (i = 0; i < lut->size; ++i) {
126     @@ -903,7 +902,7 @@
127     }
128     } else {
129     lut->size = curv->numents;
130     - if (!(lut->data = jas_malloc(lut->size * sizeof(jas_cmreal_t))))
131     + if (!(lut->data = jas_alloc2(lut->size, sizeof(jas_cmreal_t))))
132     goto error;
133     for (i = 0; i < lut->size; ++i) {
134     lut->data[i] = curv->ents[i] / 65535.0;
135     @@ -953,7 +952,7 @@
136     return -1;
137     }
138     }
139     - if (!(invlut->data = jas_malloc(n * sizeof(jas_cmreal_t))))
140     + if (!(invlut->data = jas_alloc2(n, sizeof(jas_cmreal_t))))
141     return -1;
142     invlut->size = n;
143     for (i = 0; i < invlut->size; ++i) {
144     diff -Naur jasper-1.900.1/src/libjasper/base/jas_icc.c jasper.fixed/src/libjasper/base/jas_icc.c
145     --- jasper-1.900.1/src/libjasper/base/jas_icc.c 2007-01-19 22:43:05.000000000 +0100
146     +++ jasper.fixed/src/libjasper/base/jas_icc.c 2008-12-08 21:13:55.000000000 +0100
147     @@ -373,7 +373,7 @@
148     jas_icctagtab_t *tagtab;
149    
150     tagtab = &prof->tagtab;
151     - if (!(tagtab->ents = jas_malloc(prof->attrtab->numattrs *
152     + if (!(tagtab->ents = jas_alloc2(prof->attrtab->numattrs,
153     sizeof(jas_icctagtabent_t))))
154     goto error;
155     tagtab->numents = prof->attrtab->numattrs;
156     @@ -522,7 +522,7 @@
157     }
158     if (jas_iccgetuint32(in, &tagtab->numents))
159     goto error;
160     - if (!(tagtab->ents = jas_malloc(tagtab->numents *
161     + if (!(tagtab->ents = jas_alloc2(tagtab->numents,
162     sizeof(jas_icctagtabent_t))))
163     goto error;
164     tagtabent = tagtab->ents;
165     @@ -743,8 +743,7 @@
166     {
167     jas_iccattr_t *newattrs;
168     assert(maxents >= tab->numattrs);
169     - newattrs = tab->attrs ? jas_realloc(tab->attrs, maxents *
170     - sizeof(jas_iccattr_t)) : jas_malloc(maxents * sizeof(jas_iccattr_t));
171     + newattrs = jas_realloc2(tab->attrs, maxents, sizeof(jas_iccattr_t));
172     if (!newattrs)
173     return -1;
174     tab->attrs = newattrs;
175     @@ -999,7 +998,7 @@
176    
177     if (jas_iccgetuint32(in, &curv->numents))
178     goto error;
179     - if (!(curv->ents = jas_malloc(curv->numents * sizeof(jas_iccuint16_t))))
180     + if (!(curv->ents = jas_alloc2(curv->numents, sizeof(jas_iccuint16_t))))
181     goto error;
182     for (i = 0; i < curv->numents; ++i) {
183     if (jas_iccgetuint16(in, &curv->ents[i]))
184     @@ -1100,7 +1099,7 @@
185     if (jas_iccgetuint32(in, &txtdesc->uclangcode) ||
186     jas_iccgetuint32(in, &txtdesc->uclen))
187     goto error;
188     - if (!(txtdesc->ucdata = jas_malloc(txtdesc->uclen * 2)))
189     + if (!(txtdesc->ucdata = jas_alloc2(txtdesc->uclen, 2)))
190     goto error;
191     if (jas_stream_read(in, txtdesc->ucdata, txtdesc->uclen * 2) !=
192     JAS_CAST(int, txtdesc->uclen * 2))
193     @@ -1292,17 +1291,17 @@
194     jas_iccgetuint16(in, &lut8->numouttabents))
195     goto error;
196     clutsize = jas_iccpowi(lut8->clutlen, lut8->numinchans) * lut8->numoutchans;
197     - if (!(lut8->clut = jas_malloc(clutsize * sizeof(jas_iccuint8_t))) ||
198     - !(lut8->intabsbuf = jas_malloc(lut8->numinchans *
199     - lut8->numintabents * sizeof(jas_iccuint8_t))) ||
200     - !(lut8->intabs = jas_malloc(lut8->numinchans *
201     + if (!(lut8->clut = jas_alloc2(clutsize, sizeof(jas_iccuint8_t))) ||
202     + !(lut8->intabsbuf = jas_alloc3(lut8->numinchans,
203     + lut8->numintabents, sizeof(jas_iccuint8_t))) ||
204     + !(lut8->intabs = jas_alloc2(lut8->numinchans,
205     sizeof(jas_iccuint8_t *))))
206     goto error;
207     for (i = 0; i < lut8->numinchans; ++i)
208     lut8->intabs[i] = &lut8->intabsbuf[i * lut8->numintabents];
209     - if (!(lut8->outtabsbuf = jas_malloc(lut8->numoutchans *
210     - lut8->numouttabents * sizeof(jas_iccuint8_t))) ||
211     - !(lut8->outtabs = jas_malloc(lut8->numoutchans *
212     + if (!(lut8->outtabsbuf = jas_alloc3(lut8->numoutchans,
213     + lut8->numouttabents, sizeof(jas_iccuint8_t))) ||
214     + !(lut8->outtabs = jas_alloc2(lut8->numoutchans,
215     sizeof(jas_iccuint8_t *))))
216     goto error;
217     for (i = 0; i < lut8->numoutchans; ++i)
218     @@ -1461,17 +1460,17 @@
219     jas_iccgetuint16(in, &lut16->numouttabents))
220     goto error;
221     clutsize = jas_iccpowi(lut16->clutlen, lut16->numinchans) * lut16->numoutchans;
222     - if (!(lut16->clut = jas_malloc(clutsize * sizeof(jas_iccuint16_t))) ||
223     - !(lut16->intabsbuf = jas_malloc(lut16->numinchans *
224     - lut16->numintabents * sizeof(jas_iccuint16_t))) ||
225     - !(lut16->intabs = jas_malloc(lut16->numinchans *
226     + if (!(lut16->clut = jas_alloc2(clutsize, sizeof(jas_iccuint16_t))) ||
227     + !(lut16->intabsbuf = jas_alloc3(lut16->numinchans,
228     + lut16->numintabents, sizeof(jas_iccuint16_t))) ||
229     + !(lut16->intabs = jas_alloc2(lut16->numinchans,
230     sizeof(jas_iccuint16_t *))))
231     goto error;
232     for (i = 0; i < lut16->numinchans; ++i)
233     lut16->intabs[i] = &lut16->intabsbuf[i * lut16->numintabents];
234     - if (!(lut16->outtabsbuf = jas_malloc(lut16->numoutchans *
235     - lut16->numouttabents * sizeof(jas_iccuint16_t))) ||
236     - !(lut16->outtabs = jas_malloc(lut16->numoutchans *
237     + if (!(lut16->outtabsbuf = jas_alloc3(lut16->numoutchans,
238     + lut16->numouttabents, sizeof(jas_iccuint16_t))) ||
239     + !(lut16->outtabs = jas_alloc2(lut16->numoutchans,
240     sizeof(jas_iccuint16_t *))))
241     goto error;
242     for (i = 0; i < lut16->numoutchans; ++i)
243     diff -Naur jasper-1.900.1/src/libjasper/base/jas_image.c jasper.fixed/src/libjasper/base/jas_image.c
244     --- jasper-1.900.1/src/libjasper/base/jas_image.c 2007-01-19 22:43:05.000000000 +0100
245     +++ jasper.fixed/src/libjasper/base/jas_image.c 2008-12-08 21:02:03.000000000 +0100
246     @@ -142,7 +142,7 @@
247     image->inmem_ = true;
248    
249     /* Allocate memory for the per-component information. */
250     - if (!(image->cmpts_ = jas_malloc(image->maxcmpts_ *
251     + if (!(image->cmpts_ = jas_alloc2(image->maxcmpts_,
252     sizeof(jas_image_cmpt_t *)))) {
253     jas_image_destroy(image);
254     return 0;
255     @@ -774,8 +774,7 @@
256     jas_image_cmpt_t **newcmpts;
257     int cmptno;
258    
259     - newcmpts = (!image->cmpts_) ? jas_malloc(maxcmpts * sizeof(jas_image_cmpt_t *)) :
260     - jas_realloc(image->cmpts_, maxcmpts * sizeof(jas_image_cmpt_t *));
261     + newcmpts = jas_realloc2(image->cmpts_, maxcmpts, sizeof(jas_image_cmpt_t *));
262     if (!newcmpts) {
263     return -1;
264     }
265     diff -Naur jasper-1.900.1/src/libjasper/base/jas_malloc.c jasper.fixed/src/libjasper/base/jas_malloc.c
266     --- jasper-1.900.1/src/libjasper/base/jas_malloc.c 2007-01-19 22:43:05.000000000 +0100
267     +++ jasper.fixed/src/libjasper/base/jas_malloc.c 2008-12-08 21:02:03.000000000 +0100
268     @@ -76,6 +76,9 @@
269    
270     /* We need the prototype for memset. */
271     #include <string.h>
272     +#include <limits.h>
273     +#include <errno.h>
274     +#include <stdint.h>
275    
276     #include "jasper/jas_malloc.h"
277    
278     @@ -113,18 +116,50 @@
279    
280     void *jas_realloc(void *ptr, size_t size)
281     {
282     - return realloc(ptr, size);
283     + return ptr ? realloc(ptr, size) : malloc(size);
284     }
285    
286     -void *jas_calloc(size_t nmemb, size_t size)
287     +void *jas_realloc2(void *ptr, size_t nmemb, size_t size)
288     +{
289     + if (!ptr)
290     + return jas_alloc2(nmemb, size);
291     + if (nmemb && SIZE_MAX / nmemb < size) {
292     + errno = ENOMEM;
293     + return NULL;
294     + }
295     + return jas_realloc(ptr, nmemb * size);
296     +
297     +}
298     +
299     +void *jas_alloc2(size_t nmemb, size_t size)
300     +{
301     + if (nmemb && SIZE_MAX / nmemb < size) {
302     + errno = ENOMEM;
303     + return NULL;
304     + }
305     +
306     + return jas_malloc(nmemb * size);
307     +}
308     +
309     +void *jas_alloc3(size_t a, size_t b, size_t c)
310     {
311     - void *ptr;
312     size_t n;
313     - n = nmemb * size;
314     - if (!(ptr = jas_malloc(n * sizeof(char)))) {
315     - return 0;
316     +
317     + if (a && SIZE_MAX / a < b) {
318     + errno = ENOMEM;
319     + return NULL;
320     }
321     - memset(ptr, 0, n);
322     +
323     + return jas_alloc2(a*b, c);
324     +}
325     +
326     +void *jas_calloc(size_t nmemb, size_t size)
327     +{
328     + void *ptr;
329     +
330     + ptr = jas_alloc2(nmemb, size);
331     + if (ptr)
332     + memset(ptr, 0, nmemb*size);
333     return ptr;
334     }
335    
336     diff -Naur jasper-1.900.1/src/libjasper/base/jas_seq.c jasper.fixed/src/libjasper/base/jas_seq.c
337     --- jasper-1.900.1/src/libjasper/base/jas_seq.c 2007-01-19 22:43:05.000000000 +0100
338     +++ jasper.fixed/src/libjasper/base/jas_seq.c 2008-12-08 21:02:03.000000000 +0100
339     @@ -114,7 +114,7 @@
340     matrix->datasize_ = numrows * numcols;
341    
342     if (matrix->maxrows_ > 0) {
343     - if (!(matrix->rows_ = jas_malloc(matrix->maxrows_ *
344     + if (!(matrix->rows_ = jas_alloc2(matrix->maxrows_,
345     sizeof(jas_seqent_t *)))) {
346     jas_matrix_destroy(matrix);
347     return 0;
348     @@ -122,7 +122,7 @@
349     }
350    
351     if (matrix->datasize_ > 0) {
352     - if (!(matrix->data_ = jas_malloc(matrix->datasize_ *
353     + if (!(matrix->data_ = jas_alloc2(matrix->datasize_,
354     sizeof(jas_seqent_t)))) {
355     jas_matrix_destroy(matrix);
356     return 0;
357     @@ -220,7 +220,7 @@
358     mat0->numrows_ = r1 - r0 + 1;
359     mat0->numcols_ = c1 - c0 + 1;
360     mat0->maxrows_ = mat0->numrows_;
361     - mat0->rows_ = jas_malloc(mat0->maxrows_ * sizeof(jas_seqent_t *));
362     + mat0->rows_ = jas_alloc2(mat0->maxrows_, sizeof(jas_seqent_t *));
363     for (i = 0; i < mat0->numrows_; ++i) {
364     mat0->rows_[i] = mat1->rows_[r0 + i] + c0;
365     }
366     @@ -432,7 +432,8 @@
367     for (i = 0; i < jas_matrix_numrows(matrix); ++i) {
368     for (j = 0; j < jas_matrix_numcols(matrix); ++j) {
369     x = jas_matrix_get(matrix, i, j);
370     - sprintf(sbuf, "%s%4ld", (strlen(buf) > 0) ? " " : "",
371     + snprintf(sbuf, sizeof sbuf,
372     + "%s%4ld", (strlen(buf) > 0) ? " " : "",
373     JAS_CAST(long, x));
374     n = strlen(buf);
375     if (n + strlen(sbuf) > MAXLINELEN) {
376     diff -Naur jasper-1.900.1/src/libjasper/base/jas_stream.c jasper.fixed/src/libjasper/base/jas_stream.c
377     --- jasper-1.900.1/src/libjasper/base/jas_stream.c 2007-01-19 22:43:05.000000000 +0100
378     +++ jasper.fixed/src/libjasper/base/jas_stream.c 2008-12-08 21:15:38.000000000 +0100
379     @@ -212,7 +212,7 @@
380     if (buf) {
381     obj->buf_ = (unsigned char *) buf;
382     } else {
383     - obj->buf_ = jas_malloc(obj->bufsize_ * sizeof(char));
384     + obj->buf_ = jas_malloc(obj->bufsize_);
385     obj->myalloc_ = 1;
386     }
387     if (!obj->buf_) {
388     @@ -361,28 +361,22 @@
389     }
390     obj->fd = -1;
391     obj->flags = 0;
392     - obj->pathname[0] = '\0';
393     stream->obj_ = obj;
394    
395     /* Choose a file name. */
396     - tmpnam(obj->pathname);
397     + snprintf(obj->pathname, L_tmpnam, "%s/tmp.XXXXXXXXXX", P_tmpdir);
398    
399     /* Open the underlying file. */
400     - if ((obj->fd = open(obj->pathname, O_CREAT | O_EXCL | O_RDWR | O_TRUNC | O_BINARY,
401     - JAS_STREAM_PERMS)) < 0) {
402     + if ((obj->fd = mkstemp(obj->pathname)) < 0) {
403     jas_stream_destroy(stream);
404     return 0;
405     }
406    
407     /* Unlink the file so that it will disappear if the program
408     terminates abnormally. */
409     - /* Under UNIX, one can unlink an open file and continue to do I/O
410     - on it. Not all operating systems support this functionality, however.
411     - For example, under Microsoft Windows the unlink operation will fail,
412     - since the file is open. */
413     if (unlink(obj->pathname)) {
414     - /* We will try unlinking the file again after it is closed. */
415     - obj->flags |= JAS_STREAM_FILEOBJ_DELONCLOSE;
416     + jas_stream_destroy(stream);
417     + return 0;
418     }
419    
420     /* Use full buffering. */
421     @@ -553,7 +547,7 @@
422     int ret;
423    
424     va_start(ap, fmt);
425     - ret = vsprintf(buf, fmt, ap);
426     + ret = vsnprintf(buf, sizeof buf, fmt, ap);
427     jas_stream_puts(stream, buf);
428     va_end(ap);
429     return ret;
430     @@ -992,7 +986,7 @@
431     unsigned char *buf;
432    
433     assert(m->buf_);
434     - if (!(buf = jas_realloc(m->buf_, bufsize * sizeof(unsigned char)))) {
435     + if (!(buf = jas_realloc(m->buf_, bufsize))) {
436     return -1;
437     }
438     m->buf_ = buf;
439     diff -Naur jasper-1.900.1/src/libjasper/bmp/bmp_dec.c jasper.fixed/src/libjasper/bmp/bmp_dec.c
440     --- jasper-1.900.1/src/libjasper/bmp/bmp_dec.c 2007-01-19 22:43:07.000000000 +0100
441     +++ jasper.fixed/src/libjasper/bmp/bmp_dec.c 2008-12-08 21:02:03.000000000 +0100
442     @@ -283,7 +283,7 @@
443     }
444    
445     if (info->numcolors > 0) {
446     - if (!(info->palents = jas_malloc(info->numcolors *
447     + if (!(info->palents = jas_alloc2(info->numcolors,
448     sizeof(bmp_palent_t)))) {
449     bmp_info_destroy(info);
450     return 0;
451     diff -Naur jasper-1.900.1/src/libjasper/include/jasper/jas_malloc.h jasper.fixed/src/libjasper/include/jasper/jas_malloc.h
452     --- jasper-1.900.1/src/libjasper/include/jasper/jas_malloc.h 2007-01-19 22:43:04.000000000 +0100
453     +++ jasper.fixed/src/libjasper/include/jasper/jas_malloc.h 2008-12-08 21:02:03.000000000 +0100
454     @@ -95,6 +95,9 @@
455     #define jas_free MEMFREE
456     #define jas_realloc MEMREALLOC
457     #define jas_calloc MEMCALLOC
458     +#define jas_alloc2(a, b) MEMALLOC((a)*(b))
459     +#define jas_alloc3(a, b, c) MEMALLOC((a)*(b)*(c))
460     +#define jas_realloc2(p, a, b) MEMREALLOC((p), (a)*(b))
461     #endif
462    
463     /******************************************************************************\
464     @@ -115,6 +118,12 @@
465     /* Allocate a block of memory and initialize the contents to zero. */
466     void *jas_calloc(size_t nmemb, size_t size);
467    
468     +/* size-checked double allocation .*/
469     +void *jas_alloc2(size_t, size_t);
470     +
471     +void *jas_alloc3(size_t, size_t, size_t);
472     +
473     +void *jas_realloc2(void *, size_t, size_t);
474     #endif
475    
476     #ifdef __cplusplus
477     diff -Naur jasper-1.900.1/src/libjasper/jp2/jp2_cod.c jasper.fixed/src/libjasper/jp2/jp2_cod.c
478     --- jasper-1.900.1/src/libjasper/jp2/jp2_cod.c 2007-01-19 22:43:05.000000000 +0100
479     +++ jasper.fixed/src/libjasper/jp2/jp2_cod.c 2008-12-08 21:13:55.000000000 +0100
480     @@ -372,7 +372,7 @@
481     jp2_bpcc_t *bpcc = &box->data.bpcc;
482     unsigned int i;
483     bpcc->numcmpts = box->datalen;
484     - if (!(bpcc->bpcs = jas_malloc(bpcc->numcmpts * sizeof(uint_fast8_t)))) {
485     + if (!(bpcc->bpcs = jas_alloc2(bpcc->numcmpts, sizeof(uint_fast8_t)))) {
486     return -1;
487     }
488     for (i = 0; i < bpcc->numcmpts; ++i) {
489     @@ -416,7 +416,7 @@
490     break;
491     case JP2_COLR_ICC:
492     colr->iccplen = box->datalen - 3;
493     - if (!(colr->iccp = jas_malloc(colr->iccplen * sizeof(uint_fast8_t)))) {
494     + if (!(colr->iccp = jas_alloc2(colr->iccplen, sizeof(uint_fast8_t)))) {
495     return -1;
496     }
497     if (jas_stream_read(in, colr->iccp, colr->iccplen) != colr->iccplen) {
498     @@ -453,7 +453,7 @@
499     if (jp2_getuint16(in, &cdef->numchans)) {
500     return -1;
501     }
502     - if (!(cdef->ents = jas_malloc(cdef->numchans * sizeof(jp2_cdefchan_t)))) {
503     + if (!(cdef->ents = jas_alloc2(cdef->numchans, sizeof(jp2_cdefchan_t)))) {
504     return -1;
505     }
506     for (channo = 0; channo < cdef->numchans; ++channo) {
507     @@ -766,7 +766,7 @@
508     unsigned int i;
509    
510     cmap->numchans = (box->datalen) / 4;
511     - if (!(cmap->ents = jas_malloc(cmap->numchans * sizeof(jp2_cmapent_t)))) {
512     + if (!(cmap->ents = jas_alloc2(cmap->numchans, sizeof(jp2_cmapent_t)))) {
513     return -1;
514     }
515     for (i = 0; i < cmap->numchans; ++i) {
516     @@ -795,11 +795,15 @@
517     jp2_cmap_t *cmap = &box->data.cmap;
518     unsigned int i;
519     jp2_cmapent_t *ent;
520     - fprintf(out, "numchans = %d\n", (int) cmap->numchans);
521     + if (jas_getdbglevel() >= 1) {
522     + fprintf(out, "numchans = %d\n", (int) cmap->numchans);
523     + }
524     for (i = 0; i < cmap->numchans; ++i) {
525     ent = &cmap->ents[i];
526     - fprintf(out, "cmptno=%d; map=%d; pcol=%d\n",
527     - (int) ent->cmptno, (int) ent->map, (int) ent->pcol);
528     + if (jas_getdbglevel() >= 1) {
529     + fprintf(out, "cmptno=%d; map=%d; pcol=%d\n",
530     + (int) ent->cmptno, (int) ent->map, (int) ent->pcol);
531     + }
532     }
533     }
534    
535     @@ -828,10 +832,10 @@
536     return -1;
537     }
538     lutsize = pclr->numlutents * pclr->numchans;
539     - if (!(pclr->lutdata = jas_malloc(lutsize * sizeof(int_fast32_t)))) {
540     + if (!(pclr->lutdata = jas_alloc2(lutsize, sizeof(int_fast32_t)))) {
541     return -1;
542     }
543     - if (!(pclr->bpc = jas_malloc(pclr->numchans * sizeof(uint_fast8_t)))) {
544     + if (!(pclr->bpc = jas_alloc2(pclr->numchans, sizeof(uint_fast8_t)))) {
545     return -1;
546     }
547     for (i = 0; i < pclr->numchans; ++i) {
548     diff -Naur jasper-1.900.1/src/libjasper/jp2/jp2_dec.c jasper.fixed/src/libjasper/jp2/jp2_dec.c
549     --- jasper-1.900.1/src/libjasper/jp2/jp2_dec.c 2007-01-19 22:43:05.000000000 +0100
550     +++ jasper.fixed/src/libjasper/jp2/jp2_dec.c 2008-12-08 21:13:55.000000000 +0100
551     @@ -293,7 +293,9 @@
552     dec->colr->data.colr.iccplen);
553     assert(iccprof);
554     jas_iccprof_gethdr(iccprof, &icchdr);
555     - jas_eprintf("ICC Profile CS %08x\n", icchdr.colorspc);
556     + if (jas_getdbglevel() >= 1) {
557     + jas_eprintf("ICC Profile CS %08x\n", icchdr.colorspc);
558     + }
559     jas_image_setclrspc(dec->image, fromiccpcs(icchdr.colorspc));
560     dec->image->cmprof_ = jas_cmprof_createfromiccprof(iccprof);
561     assert(dec->image->cmprof_);
562     @@ -336,7 +338,7 @@
563     }
564    
565     /* Allocate space for the channel-number to component-number LUT. */
566     - if (!(dec->chantocmptlut = jas_malloc(dec->numchans * sizeof(uint_fast16_t)))) {
567     + if (!(dec->chantocmptlut = jas_alloc2(dec->numchans, sizeof(uint_fast16_t)))) {
568     jas_eprintf("error: no memory\n");
569     goto error;
570     }
571     @@ -354,7 +356,7 @@
572     if (cmapent->map == JP2_CMAP_DIRECT) {
573     dec->chantocmptlut[channo] = channo;
574     } else if (cmapent->map == JP2_CMAP_PALETTE) {
575     - lutents = jas_malloc(pclrd->numlutents * sizeof(int_fast32_t));
576     + lutents = jas_alloc2(pclrd->numlutents, sizeof(int_fast32_t));
577     for (i = 0; i < pclrd->numlutents; ++i) {
578     lutents[i] = pclrd->lutdata[cmapent->pcol + i * pclrd->numchans];
579     }
580     diff -Naur jasper-1.900.1/src/libjasper/jp2/jp2_enc.c jasper.fixed/src/libjasper/jp2/jp2_enc.c
581     --- jasper-1.900.1/src/libjasper/jp2/jp2_enc.c 2007-01-19 22:43:05.000000000 +0100
582     +++ jasper.fixed/src/libjasper/jp2/jp2_enc.c 2008-12-08 21:02:03.000000000 +0100
583     @@ -191,7 +191,7 @@
584     }
585     bpcc = &box->data.bpcc;
586     bpcc->numcmpts = jas_image_numcmpts(image);
587     - if (!(bpcc->bpcs = jas_malloc(bpcc->numcmpts *
588     + if (!(bpcc->bpcs = jas_alloc2(bpcc->numcmpts,
589     sizeof(uint_fast8_t)))) {
590     goto error;
591     }
592     @@ -285,7 +285,7 @@
593     }
594     cdef = &box->data.cdef;
595     cdef->numchans = jas_image_numcmpts(image);
596     - cdef->ents = jas_malloc(cdef->numchans * sizeof(jp2_cdefchan_t));
597     + cdef->ents = jas_alloc2(cdef->numchans, sizeof(jp2_cdefchan_t));
598     for (i = 0; i < jas_image_numcmpts(image); ++i) {
599     cdefchanent = &cdef->ents[i];
600     cdefchanent->channo = i;
601     @@ -343,7 +343,8 @@
602     /* Output the JPEG-2000 code stream. */
603    
604     overhead = jas_stream_getrwcount(out);
605     - sprintf(buf, "%s\n_jp2overhead=%lu\n", (optstr ? optstr : ""),
606     + snprintf(buf, sizeof buf, "%s\n_jp2overhead=%lu\n",
607     + (optstr ? optstr : ""),
608     (unsigned long) overhead);
609    
610     if (jpc_encode(image, out, buf)) {
611     diff -Naur jasper-1.900.1/src/libjasper/jpc/jpc_cs.c jasper.fixed/src/libjasper/jpc/jpc_cs.c
612     --- jasper-1.900.1/src/libjasper/jpc/jpc_cs.c 2007-01-19 22:43:07.000000000 +0100
613     +++ jasper.fixed/src/libjasper/jpc/jpc_cs.c 2008-12-08 21:02:03.000000000 +0100
614     @@ -502,7 +502,7 @@
615     !siz->tileheight || !siz->numcomps) {
616     return -1;
617     }
618     - if (!(siz->comps = jas_malloc(siz->numcomps * sizeof(jpc_sizcomp_t)))) {
619     + if (!(siz->comps = jas_alloc2(siz->numcomps, sizeof(jpc_sizcomp_t)))) {
620     return -1;
621     }
622     for (i = 0; i < siz->numcomps; ++i) {
623     @@ -982,8 +982,11 @@
624     compparms->numstepsizes = (len - n) / 2;
625     break;
626     }
627     - if (compparms->numstepsizes > 0) {
628     - compparms->stepsizes = jas_malloc(compparms->numstepsizes *
629     + if (compparms->numstepsizes > 3 * JPC_MAXRLVLS + 1) {
630     + jpc_qcx_destroycompparms(compparms);
631     + return -1;
632     + } else if (compparms->numstepsizes > 0) {
633     + compparms->stepsizes = jas_alloc2(compparms->numstepsizes,
634     sizeof(uint_fast16_t));
635     assert(compparms->stepsizes);
636     for (i = 0; i < compparms->numstepsizes; ++i) {
637     @@ -1091,7 +1094,7 @@
638    
639     ppm->len = ms->len - 1;
640     if (ppm->len > 0) {
641     - if (!(ppm->data = jas_malloc(ppm->len * sizeof(unsigned char)))) {
642     + if (!(ppm->data = jas_malloc(ppm->len))) {
643     goto error;
644     }
645     if (JAS_CAST(uint, jas_stream_read(in, ppm->data, ppm->len)) != ppm->len) {
646     @@ -1160,7 +1163,7 @@
647     }
648     ppt->len = ms->len - 1;
649     if (ppt->len > 0) {
650     - if (!(ppt->data = jas_malloc(ppt->len * sizeof(unsigned char)))) {
651     + if (!(ppt->data = jas_malloc(ppt->len))) {
652     goto error;
653     }
654     if (jas_stream_read(in, (char *) ppt->data, ppt->len) != JAS_CAST(int, ppt->len)) {
655     @@ -1223,7 +1226,7 @@
656     uint_fast8_t tmp;
657     poc->numpchgs = (cstate->numcomps > 256) ? (ms->len / 9) :
658     (ms->len / 7);
659     - if (!(poc->pchgs = jas_malloc(poc->numpchgs * sizeof(jpc_pocpchg_t)))) {
660     + if (!(poc->pchgs = jas_alloc2(poc->numpchgs, sizeof(jpc_pocpchg_t)))) {
661     goto error;
662     }
663     for (pchgno = 0, pchg = poc->pchgs; pchgno < poc->numpchgs; ++pchgno,
664     @@ -1328,7 +1331,7 @@
665     jpc_crgcomp_t *comp;
666     uint_fast16_t compno;
667     crg->numcomps = cstate->numcomps;
668     - if (!(crg->comps = jas_malloc(cstate->numcomps * sizeof(uint_fast16_t)))) {
669     + if (!(crg->comps = jas_alloc2(cstate->numcomps, sizeof(uint_fast16_t)))) {
670     return -1;
671     }
672     for (compno = 0, comp = crg->comps; compno < cstate->numcomps;
673     @@ -1467,7 +1470,7 @@
674     cstate = 0;
675    
676     if (ms->len > 0) {
677     - if (!(unk->data = jas_malloc(ms->len * sizeof(unsigned char)))) {
678     + if (!(unk->data = jas_malloc(ms->len))) {
679     return -1;
680     }
681     if (jas_stream_read(in, (char *) unk->data, ms->len) != JAS_CAST(int, ms->len)) {
682     diff -Naur jasper-1.900.1/src/libjasper/jpc/jpc_dec.c jasper.fixed/src/libjasper/jpc/jpc_dec.c
683     --- jasper-1.900.1/src/libjasper/jpc/jpc_dec.c 2007-01-19 22:43:07.000000000 +0100
684     +++ jasper.fixed/src/libjasper/jpc/jpc_dec.c 2008-12-08 21:13:55.000000000 +0100
685     @@ -449,7 +449,7 @@
686    
687     if (dec->state == JPC_MH) {
688    
689     - compinfos = jas_malloc(dec->numcomps * sizeof(jas_image_cmptparm_t));
690     + compinfos = jas_alloc2(dec->numcomps, sizeof(jas_image_cmptparm_t));
691     assert(compinfos);
692     for (cmptno = 0, cmpt = dec->cmpts, compinfo = compinfos;
693     cmptno < dec->numcomps; ++cmptno, ++cmpt, ++compinfo) {
694     @@ -692,7 +692,7 @@
695     tile->realmode = 1;
696     }
697     tcomp->numrlvls = ccp->numrlvls;
698     - if (!(tcomp->rlvls = jas_malloc(tcomp->numrlvls *
699     + if (!(tcomp->rlvls = jas_alloc2(tcomp->numrlvls,
700     sizeof(jpc_dec_rlvl_t)))) {
701     return -1;
702     }
703     @@ -764,7 +764,7 @@
704     rlvl->cbgheightexpn);
705    
706     rlvl->numbands = (!rlvlno) ? 1 : 3;
707     - if (!(rlvl->bands = jas_malloc(rlvl->numbands *
708     + if (!(rlvl->bands = jas_alloc2(rlvl->numbands,
709     sizeof(jpc_dec_band_t)))) {
710     return -1;
711     }
712     @@ -797,7 +797,7 @@
713    
714     assert(rlvl->numprcs);
715    
716     - if (!(band->prcs = jas_malloc(rlvl->numprcs * sizeof(jpc_dec_prc_t)))) {
717     + if (!(band->prcs = jas_alloc2(rlvl->numprcs, sizeof(jpc_dec_prc_t)))) {
718     return -1;
719     }
720    
721     @@ -834,7 +834,7 @@
722     if (!(prc->numimsbstagtree = jpc_tagtree_create(prc->numhcblks, prc->numvcblks))) {
723     return -1;
724     }
725     - if (!(prc->cblks = jas_malloc(prc->numcblks * sizeof(jpc_dec_cblk_t)))) {
726     + if (!(prc->cblks = jas_alloc2(prc->numcblks, sizeof(jpc_dec_cblk_t)))) {
727     return -1;
728     }
729    
730     @@ -1181,7 +1181,7 @@
731     return -1;
732     }
733    
734     - if (!(dec->cmpts = jas_malloc(dec->numcomps * sizeof(jpc_dec_cmpt_t)))) {
735     + if (!(dec->cmpts = jas_alloc2(dec->numcomps, sizeof(jpc_dec_cmpt_t)))) {
736     return -1;
737     }
738    
739     @@ -1204,7 +1204,7 @@
740     dec->numhtiles = JPC_CEILDIV(dec->xend - dec->tilexoff, dec->tilewidth);
741     dec->numvtiles = JPC_CEILDIV(dec->yend - dec->tileyoff, dec->tileheight);
742     dec->numtiles = dec->numhtiles * dec->numvtiles;
743     - if (!(dec->tiles = jas_malloc(dec->numtiles * sizeof(jpc_dec_tile_t)))) {
744     + if (!(dec->tiles = jas_alloc2(dec->numtiles, sizeof(jpc_dec_tile_t)))) {
745     return -1;
746     }
747    
748     @@ -1228,7 +1228,7 @@
749     tile->pkthdrstreampos = 0;
750     tile->pptstab = 0;
751     tile->cp = 0;
752     - if (!(tile->tcomps = jas_malloc(dec->numcomps *
753     + if (!(tile->tcomps = jas_alloc2(dec->numcomps,
754     sizeof(jpc_dec_tcomp_t)))) {
755     return -1;
756     }
757     @@ -1466,7 +1466,9 @@
758     dec = 0;
759    
760     jas_eprintf("warning: ignoring unknown marker segment\n");
761     - jpc_ms_dump(ms, stderr);
762     + if (jas_getdbglevel() >= 1) {
763     + jpc_ms_dump(ms, stderr);
764     + }
765     return 0;
766     }
767    
768     @@ -1489,7 +1491,7 @@
769     cp->numlyrs = 0;
770     cp->mctid = 0;
771     cp->csty = 0;
772     - if (!(cp->ccps = jas_malloc(cp->numcomps * sizeof(jpc_dec_ccp_t)))) {
773     + if (!(cp->ccps = jas_alloc2(cp->numcomps, sizeof(jpc_dec_ccp_t)))) {
774     return 0;
775     }
776     if (!(cp->pchglist = jpc_pchglist_create())) {
777     @@ -2048,7 +2050,7 @@
778     }
779     streamlist->numstreams = 0;
780     streamlist->maxstreams = 100;
781     - if (!(streamlist->streams = jas_malloc(streamlist->maxstreams *
782     + if (!(streamlist->streams = jas_alloc2(streamlist->maxstreams,
783     sizeof(jas_stream_t *)))) {
784     jas_free(streamlist);
785     return 0;
786     @@ -2068,8 +2070,8 @@
787     /* Grow the array of streams if necessary. */
788     if (streamlist->numstreams >= streamlist->maxstreams) {
789     newmaxstreams = streamlist->maxstreams + 1024;
790     - if (!(newstreams = jas_realloc(streamlist->streams,
791     - (newmaxstreams + 1024) * sizeof(jas_stream_t *)))) {
792     + if (!(newstreams = jas_realloc2(streamlist->streams,
793     + (newmaxstreams + 1024), sizeof(jas_stream_t *)))) {
794     return -1;
795     }
796     for (i = streamlist->numstreams; i < streamlist->maxstreams; ++i) {
797     @@ -2155,8 +2157,7 @@
798     {
799     jpc_ppxstabent_t **newents;
800     if (tab->maxents < maxents) {
801     - newents = (tab->ents) ? jas_realloc(tab->ents, maxents *
802     - sizeof(jpc_ppxstabent_t *)) : jas_malloc(maxents * sizeof(jpc_ppxstabent_t *));
803     + newents = jas_realloc2(tab->ents, maxents, sizeof(jpc_ppxstabent_t *));
804     if (!newents) {
805     return -1;
806     }
807     diff -Naur jasper-1.900.1/src/libjasper/jpc/jpc_enc.c jasper.fixed/src/libjasper/jpc/jpc_enc.c
808     --- jasper-1.900.1/src/libjasper/jpc/jpc_enc.c 2007-01-19 22:43:07.000000000 +0100
809     +++ jasper.fixed/src/libjasper/jpc/jpc_enc.c 2008-12-08 21:02:03.000000000 +0100
810     @@ -403,7 +403,7 @@
811     vsteplcm *= jas_image_cmptvstep(image, cmptno);
812     }
813    
814     - if (!(cp->ccps = jas_malloc(cp->numcmpts * sizeof(jpc_enc_ccp_t)))) {
815     + if (!(cp->ccps = jas_alloc2(cp->numcmpts, sizeof(jpc_enc_ccp_t)))) {
816     goto error;
817     }
818     for (cmptno = 0, ccp = cp->ccps; cmptno < JAS_CAST(int, cp->numcmpts); ++cmptno,
819     @@ -656,7 +656,7 @@
820    
821     if (ilyrrates && numilyrrates > 0) {
822     tcp->numlyrs = numilyrrates + 1;
823     - if (!(tcp->ilyrrates = jas_malloc((tcp->numlyrs - 1) *
824     + if (!(tcp->ilyrrates = jas_alloc2((tcp->numlyrs - 1),
825     sizeof(jpc_fix_t)))) {
826     goto error;
827     }
828     @@ -940,7 +940,7 @@
829     siz->tilewidth = cp->tilewidth;
830     siz->tileheight = cp->tileheight;
831     siz->numcomps = cp->numcmpts;
832     - siz->comps = jas_malloc(siz->numcomps * sizeof(jpc_sizcomp_t));
833     + siz->comps = jas_alloc2(siz->numcomps, sizeof(jpc_sizcomp_t));
834     assert(siz->comps);
835     for (i = 0; i < JAS_CAST(int, cp->numcmpts); ++i) {
836     siz->comps[i].prec = cp->ccps[i].prec;
837     @@ -958,7 +958,8 @@
838     if (!(enc->mrk = jpc_ms_create(JPC_MS_COM))) {
839     return -1;
840     }
841     - sprintf(buf, "Creator: JasPer Version %s", jas_getversion());
842     + snprintf(buf, sizeof buf, "Creator: JasPer Version %s",
843     + jas_getversion());
844     com = &enc->mrk->parms.com;
845     com->len = strlen(buf);
846     com->regid = JPC_COM_LATIN;
847     @@ -977,7 +978,7 @@
848     return -1;
849     }
850     crg = &enc->mrk->parms.crg;
851     - crg->comps = jas_malloc(crg->numcomps * sizeof(jpc_crgcomp_t));
852     + crg->comps = jas_alloc2(crg->numcomps, sizeof(jpc_crgcomp_t));
853     if (jpc_putms(enc->out, enc->cstate, enc->mrk)) {
854     jas_eprintf("cannot write CRG marker\n");
855     return -1;
856     @@ -1955,7 +1956,7 @@
857     tile->mctid = cp->tcp.mctid;
858    
859     tile->numlyrs = cp->tcp.numlyrs;
860     - if (!(tile->lyrsizes = jas_malloc(tile->numlyrs *
861     + if (!(tile->lyrsizes = jas_alloc2(tile->numlyrs,
862     sizeof(uint_fast32_t)))) {
863     goto error;
864     }
865     @@ -1964,7 +1965,7 @@
866     }
867    
868     /* Allocate an array for the per-tile-component information. */
869     - if (!(tile->tcmpts = jas_malloc(cp->numcmpts * sizeof(jpc_enc_tcmpt_t)))) {
870     + if (!(tile->tcmpts = jas_alloc2(cp->numcmpts, sizeof(jpc_enc_tcmpt_t)))) {
871     goto error;
872     }
873     /* Initialize a few members critical for error recovery. */
874     @@ -2110,7 +2111,7 @@
875     jas_seq2d_ystart(tcmpt->data), jas_seq2d_xend(tcmpt->data),
876     jas_seq2d_yend(tcmpt->data), bandinfos);
877    
878     - if (!(tcmpt->rlvls = jas_malloc(tcmpt->numrlvls * sizeof(jpc_enc_rlvl_t)))) {
879     + if (!(tcmpt->rlvls = jas_alloc2(tcmpt->numrlvls, sizeof(jpc_enc_rlvl_t)))) {
880     goto error;
881     }
882     for (rlvlno = 0, rlvl = tcmpt->rlvls; rlvlno < tcmpt->numrlvls;
883     @@ -2213,7 +2214,7 @@
884     rlvl->numvprcs = JPC_FLOORDIVPOW2(brprcbry - tlprctly, rlvl->prcheightexpn);
885     rlvl->numprcs = rlvl->numhprcs * rlvl->numvprcs;
886    
887     - if (!(rlvl->bands = jas_malloc(rlvl->numbands * sizeof(jpc_enc_band_t)))) {
888     + if (!(rlvl->bands = jas_alloc2(rlvl->numbands, sizeof(jpc_enc_band_t)))) {
889     goto error;
890     }
891     for (bandno = 0, band = rlvl->bands; bandno < rlvl->numbands;
892     @@ -2290,7 +2291,7 @@
893     band->synweight = bandinfo->synenergywt;
894    
895     if (band->data) {
896     - if (!(band->prcs = jas_malloc(rlvl->numprcs * sizeof(jpc_enc_prc_t)))) {
897     + if (!(band->prcs = jas_alloc2(rlvl->numprcs, sizeof(jpc_enc_prc_t)))) {
898     goto error;
899     }
900     for (prcno = 0, prc = band->prcs; prcno < rlvl->numprcs; ++prcno,
901     @@ -2422,7 +2423,7 @@
902     goto error;
903     }
904    
905     - if (!(prc->cblks = jas_malloc(prc->numcblks * sizeof(jpc_enc_cblk_t)))) {
906     + if (!(prc->cblks = jas_alloc2(prc->numcblks, sizeof(jpc_enc_cblk_t)))) {
907     goto error;
908     }
909     for (cblkno = 0, cblk = prc->cblks; cblkno < prc->numcblks;
910     diff -Naur jasper-1.900.1/src/libjasper/jpc/jpc_mqdec.c jasper.fixed/src/libjasper/jpc/jpc_mqdec.c
911     --- jasper-1.900.1/src/libjasper/jpc/jpc_mqdec.c 2007-01-19 22:43:07.000000000 +0100
912     +++ jasper.fixed/src/libjasper/jpc/jpc_mqdec.c 2008-12-08 21:02:03.000000000 +0100
913     @@ -118,7 +118,7 @@
914     mqdec->in = in;
915     mqdec->maxctxs = maxctxs;
916     /* Allocate memory for the per-context state information. */
917     - if (!(mqdec->ctxs = jas_malloc(mqdec->maxctxs * sizeof(jpc_mqstate_t *)))) {
918     + if (!(mqdec->ctxs = jas_alloc2(mqdec->maxctxs, sizeof(jpc_mqstate_t *)))) {
919     goto error;
920     }
921     /* Set the current context to the first context. */
922     diff -Naur jasper-1.900.1/src/libjasper/jpc/jpc_mqenc.c jasper.fixed/src/libjasper/jpc/jpc_mqenc.c
923     --- jasper-1.900.1/src/libjasper/jpc/jpc_mqenc.c 2007-01-19 22:43:07.000000000 +0100
924     +++ jasper.fixed/src/libjasper/jpc/jpc_mqenc.c 2008-12-08 21:02:03.000000000 +0100
925     @@ -197,7 +197,7 @@
926     mqenc->maxctxs = maxctxs;
927    
928     /* Allocate memory for the per-context state information. */
929     - if (!(mqenc->ctxs = jas_malloc(mqenc->maxctxs * sizeof(jpc_mqstate_t *)))) {
930     + if (!(mqenc->ctxs = jas_alloc2(mqenc->maxctxs, sizeof(jpc_mqstate_t *)))) {
931     goto error;
932     }
933    
934     diff -Naur jasper-1.900.1/src/libjasper/jpc/jpc_qmfb.c jasper.fixed/src/libjasper/jpc/jpc_qmfb.c
935     --- jasper-1.900.1/src/libjasper/jpc/jpc_qmfb.c 2007-01-19 22:43:07.000000000 +0100
936     +++ jasper.fixed/src/libjasper/jpc/jpc_qmfb.c 2008-12-08 21:02:03.000000000 +0100
937     @@ -321,7 +321,7 @@
938     #if !defined(HAVE_VLA)
939     /* Get a buffer. */
940     if (bufsize > QMFB_SPLITBUFSIZE) {
941     - if (!(buf = jas_malloc(bufsize * sizeof(jpc_fix_t)))) {
942     + if (!(buf = jas_alloc2(bufsize, sizeof(jpc_fix_t)))) {
943     /* We have no choice but to commit suicide in this case. */
944     abort();
945     }
946     @@ -389,7 +389,7 @@
947     #if !defined(HAVE_VLA)
948     /* Get a buffer. */
949     if (bufsize > QMFB_SPLITBUFSIZE) {
950     - if (!(buf = jas_malloc(bufsize * sizeof(jpc_fix_t)))) {
951     + if (!(buf = jas_alloc2(bufsize, sizeof(jpc_fix_t)))) {
952     /* We have no choice but to commit suicide in this case. */
953     abort();
954     }
955     @@ -460,7 +460,7 @@
956     #if !defined(HAVE_VLA)
957     /* Get a buffer. */
958     if (bufsize > QMFB_SPLITBUFSIZE) {
959     - if (!(buf = jas_malloc(bufsize * sizeof(jpc_fix_t)))) {
960     + if (!(buf = jas_alloc2(bufsize, sizeof(jpc_fix_t)))) {
961     /* We have no choice but to commit suicide in this case. */
962     abort();
963     }
964     @@ -549,7 +549,7 @@
965     #if !defined(HAVE_VLA)
966     /* Get a buffer. */
967     if (bufsize > QMFB_SPLITBUFSIZE) {
968     - if (!(buf = jas_malloc(bufsize * sizeof(jpc_fix_t)))) {
969     + if (!(buf = jas_alloc2(bufsize, sizeof(jpc_fix_t)))) {
970     /* We have no choice but to commit suicide in this case. */
971     abort();
972     }
973     @@ -633,7 +633,7 @@
974     #if !defined(HAVE_VLA)
975     /* Allocate memory for the join buffer from the heap. */
976     if (bufsize > QMFB_JOINBUFSIZE) {
977     - if (!(buf = jas_malloc(bufsize * sizeof(jpc_fix_t)))) {
978     + if (!(buf = jas_alloc2(bufsize, sizeof(jpc_fix_t)))) {
979     /* We have no choice but to commit suicide. */
980     abort();
981     }
982     @@ -698,7 +698,7 @@
983     #if !defined(HAVE_VLA)
984     /* Allocate memory for the join buffer from the heap. */
985     if (bufsize > QMFB_JOINBUFSIZE) {
986     - if (!(buf = jas_malloc(bufsize * sizeof(jpc_fix_t)))) {
987     + if (!(buf = jas_alloc2(bufsize, sizeof(jpc_fix_t)))) {
988     /* We have no choice but to commit suicide. */
989     abort();
990     }
991     @@ -766,7 +766,7 @@
992     #if !defined(HAVE_VLA)
993     /* Allocate memory for the join buffer from the heap. */
994     if (bufsize > QMFB_JOINBUFSIZE) {
995     - if (!(buf = jas_malloc(bufsize * JPC_QMFB_COLGRPSIZE * sizeof(jpc_fix_t)))) {
996     + if (!(buf = jas_alloc2(bufsize, JPC_QMFB_COLGRPSIZE * sizeof(jpc_fix_t)))) {
997     /* We have no choice but to commit suicide. */
998     abort();
999     }
1000     @@ -852,7 +852,7 @@
1001     #if !defined(HAVE_VLA)
1002     /* Allocate memory for the join buffer from the heap. */
1003     if (bufsize > QMFB_JOINBUFSIZE) {
1004     - if (!(buf = jas_malloc(bufsize * numcols * sizeof(jpc_fix_t)))) {
1005     + if (!(buf = jas_alloc3(bufsize, numcols, sizeof(jpc_fix_t)))) {
1006     /* We have no choice but to commit suicide. */
1007     abort();
1008     }
1009     diff -Naur jasper-1.900.1/src/libjasper/jpc/jpc_t1enc.c jasper.fixed/src/libjasper/jpc/jpc_t1enc.c
1010     --- jasper-1.900.1/src/libjasper/jpc/jpc_t1enc.c 2007-01-19 22:43:07.000000000 +0100
1011     +++ jasper.fixed/src/libjasper/jpc/jpc_t1enc.c 2008-12-08 21:02:03.000000000 +0100
1012     @@ -219,7 +219,7 @@
1013    
1014     cblk->numpasses = (cblk->numbps > 0) ? (3 * cblk->numbps - 2) : 0;
1015     if (cblk->numpasses > 0) {
1016     - cblk->passes = jas_malloc(cblk->numpasses * sizeof(jpc_enc_pass_t));
1017     + cblk->passes = jas_alloc2(cblk->numpasses, sizeof(jpc_enc_pass_t));
1018     assert(cblk->passes);
1019     } else {
1020     cblk->passes = 0;
1021     diff -Naur jasper-1.900.1/src/libjasper/jpc/jpc_t2cod.c jasper.fixed/src/libjasper/jpc/jpc_t2cod.c
1022     --- jasper-1.900.1/src/libjasper/jpc/jpc_t2cod.c 2007-01-19 22:43:07.000000000 +0100
1023     +++ jasper.fixed/src/libjasper/jpc/jpc_t2cod.c 2008-12-08 21:02:03.000000000 +0100
1024     @@ -573,7 +573,7 @@
1025     }
1026     if (pchglist->numpchgs >= pchglist->maxpchgs) {
1027     newmaxpchgs = pchglist->maxpchgs + 128;
1028     - if (!(newpchgs = jas_realloc(pchglist->pchgs, newmaxpchgs * sizeof(jpc_pchg_t *)))) {
1029     + if (!(newpchgs = jas_realloc2(pchglist->pchgs, newmaxpchgs, sizeof(jpc_pchg_t *)))) {
1030     return -1;
1031     }
1032     pchglist->maxpchgs = newmaxpchgs;
1033     diff -Naur jasper-1.900.1/src/libjasper/jpc/jpc_t2dec.c jasper.fixed/src/libjasper/jpc/jpc_t2dec.c
1034     --- jasper-1.900.1/src/libjasper/jpc/jpc_t2dec.c 2007-01-19 22:43:07.000000000 +0100
1035     +++ jasper.fixed/src/libjasper/jpc/jpc_t2dec.c 2008-12-08 21:02:03.000000000 +0100
1036     @@ -478,7 +478,7 @@
1037     return 0;
1038     }
1039     pi->numcomps = dec->numcomps;
1040     - if (!(pi->picomps = jas_malloc(pi->numcomps * sizeof(jpc_picomp_t)))) {
1041     + if (!(pi->picomps = jas_alloc2(pi->numcomps, sizeof(jpc_picomp_t)))) {
1042     jpc_pi_destroy(pi);
1043     return 0;
1044     }
1045     @@ -490,7 +490,7 @@
1046     for (compno = 0, tcomp = tile->tcomps, picomp = pi->picomps;
1047     compno < pi->numcomps; ++compno, ++tcomp, ++picomp) {
1048     picomp->numrlvls = tcomp->numrlvls;
1049     - if (!(picomp->pirlvls = jas_malloc(picomp->numrlvls *
1050     + if (!(picomp->pirlvls = jas_alloc2(picomp->numrlvls,
1051     sizeof(jpc_pirlvl_t)))) {
1052     jpc_pi_destroy(pi);
1053     return 0;
1054     @@ -503,7 +503,7 @@
1055     rlvlno < picomp->numrlvls; ++rlvlno, ++pirlvl, ++rlvl) {
1056     /* XXX sizeof(long) should be sizeof different type */
1057     pirlvl->numprcs = rlvl->numprcs;
1058     - if (!(pirlvl->prclyrnos = jas_malloc(pirlvl->numprcs *
1059     + if (!(pirlvl->prclyrnos = jas_alloc2(pirlvl->numprcs,
1060     sizeof(long)))) {
1061     jpc_pi_destroy(pi);
1062     return 0;
1063     diff -Naur jasper-1.900.1/src/libjasper/jpc/jpc_t2enc.c jasper.fixed/src/libjasper/jpc/jpc_t2enc.c
1064     --- jasper-1.900.1/src/libjasper/jpc/jpc_t2enc.c 2007-01-19 22:43:07.000000000 +0100
1065     +++ jasper.fixed/src/libjasper/jpc/jpc_t2enc.c 2008-12-08 21:02:03.000000000 +0100
1066     @@ -565,7 +565,7 @@
1067     }
1068     pi->pktno = -1;
1069     pi->numcomps = cp->numcmpts;
1070     - if (!(pi->picomps = jas_malloc(pi->numcomps * sizeof(jpc_picomp_t)))) {
1071     + if (!(pi->picomps = jas_alloc2(pi->numcomps, sizeof(jpc_picomp_t)))) {
1072     jpc_pi_destroy(pi);
1073     return 0;
1074     }
1075     @@ -577,7 +577,7 @@
1076     for (compno = 0, tcomp = tile->tcmpts, picomp = pi->picomps;
1077     compno < pi->numcomps; ++compno, ++tcomp, ++picomp) {
1078     picomp->numrlvls = tcomp->numrlvls;
1079     - if (!(picomp->pirlvls = jas_malloc(picomp->numrlvls *
1080     + if (!(picomp->pirlvls = jas_alloc2(picomp->numrlvls,
1081     sizeof(jpc_pirlvl_t)))) {
1082     jpc_pi_destroy(pi);
1083     return 0;
1084     @@ -591,7 +591,7 @@
1085     /* XXX sizeof(long) should be sizeof different type */
1086     pirlvl->numprcs = rlvl->numprcs;
1087     if (rlvl->numprcs) {
1088     - if (!(pirlvl->prclyrnos = jas_malloc(pirlvl->numprcs *
1089     + if (!(pirlvl->prclyrnos = jas_alloc2(pirlvl->numprcs,
1090     sizeof(long)))) {
1091     jpc_pi_destroy(pi);
1092     return 0;
1093     diff -Naur jasper-1.900.1/src/libjasper/jpc/jpc_tagtree.c jasper.fixed/src/libjasper/jpc/jpc_tagtree.c
1094     --- jasper-1.900.1/src/libjasper/jpc/jpc_tagtree.c 2007-01-19 22:43:07.000000000 +0100
1095     +++ jasper.fixed/src/libjasper/jpc/jpc_tagtree.c 2008-12-08 21:02:03.000000000 +0100
1096     @@ -125,7 +125,7 @@
1097     ++numlvls;
1098     } while (n > 1);
1099    
1100     - if (!(tree->nodes_ = jas_malloc(tree->numnodes_ * sizeof(jpc_tagtreenode_t)))) {
1101     + if (!(tree->nodes_ = jas_alloc2(tree->numnodes_, sizeof(jpc_tagtreenode_t)))) {
1102     return 0;
1103     }
1104    
1105     diff -Naur jasper-1.900.1/src/libjasper/jpc/jpc_util.c jasper.fixed/src/libjasper/jpc/jpc_util.c
1106     --- jasper-1.900.1/src/libjasper/jpc/jpc_util.c 2007-01-19 22:43:07.000000000 +0100
1107     +++ jasper.fixed/src/libjasper/jpc/jpc_util.c 2008-12-08 21:02:03.000000000 +0100
1108     @@ -109,7 +109,7 @@
1109     }
1110    
1111     if (n) {
1112     - if (!(vs = jas_malloc(n * sizeof(double)))) {
1113     + if (!(vs = jas_alloc2(n, sizeof(double)))) {
1114     return -1;
1115     }
1116    
1117     diff -Naur jasper-1.900.1/src/libjasper/mif/mif_cod.c jasper.fixed/src/libjasper/mif/mif_cod.c
1118     --- jasper-1.900.1/src/libjasper/mif/mif_cod.c 2007-01-19 22:43:05.000000000 +0100
1119     +++ jasper.fixed/src/libjasper/mif/mif_cod.c 2008-12-08 21:02:03.000000000 +0100
1120     @@ -438,8 +438,7 @@
1121     int cmptno;
1122     mif_cmpt_t **newcmpts;
1123     assert(maxcmpts >= hdr->numcmpts);
1124     - newcmpts = (!hdr->cmpts) ? jas_malloc(maxcmpts * sizeof(mif_cmpt_t *)) :
1125     - jas_realloc(hdr->cmpts, maxcmpts * sizeof(mif_cmpt_t *));
1126     + newcmpts = jas_realloc2(hdr->cmpts, maxcmpts, sizeof(mif_cmpt_t *));
1127     if (!newcmpts) {
1128     return -1;
1129     }
1130     diff -Naur jasper-1.900.1/src/libjasper/pnm/pnm_enc.c jasper.fixed/src/libjasper/pnm/pnm_enc.c
1131     --- jasper-1.900.1/src/libjasper/pnm/pnm_enc.c 2007-01-19 22:43:05.000000000 +0100
1132     +++ jasper.fixed/src/libjasper/pnm/pnm_enc.c 2008-12-08 21:02:03.000000000 +0100
1133     @@ -374,7 +374,7 @@
1134     }
1135     }
1136     } else {
1137     - n = sprintf(buf, "%s%ld", ((!(!x && !cmptno)) ? " " : ""),
1138     + n = snprintf(buf, sizeof buf, "%s%ld", ((!(!x && !cmptno)) ? " " : ""),
1139     (long) v);
1140     if (linelen > 0 && linelen + n > PNM_MAXLINELEN) {
1141     jas_stream_printf(out, "\n");