X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2Fjpeg%2Flibijg12%2Fjdhuff12.c;h=b3734b89ab366b2d70ecd0d8aabc39d788464388;hb=7b90a94638699fec1143d1928f6a6b6f3c769d54;hp=0a3b012a950d758662478b078053fe4605dbb231;hpb=de0306fc7eb3c521ddc9aaac1496a8d4ce1477cb;p=gdcm.git diff --git a/src/jpeg/libijg12/jdhuff12.c b/src/jpeg/libijg12/jdhuff12.c index 0a3b012a..b3734b89 100644 --- a/src/jpeg/libijg12/jdhuff12.c +++ b/src/jpeg/libijg12/jdhuff12.c @@ -182,8 +182,10 @@ jpeg_make_d_derived_tbl (j_decompress_ptr cinfo, boolean isDC, int tblno, p = 0; for (l = 1; l <= 16; l++) { i = (int) htbl->bits[l]; - if (i < 0 || p + i > 256) /* protect against table overrun */ + if (i < 0 || p + i > 256){ /* protect against table overrun */ + printf ("JERR_BAD_HUFF_TABLE : protect against table overrun (i=%d p=%d)\n",i,p); ERREXIT(cinfo, JERR_BAD_HUFF_TABLE); + } while (i--) huffsize[p++] = (char) l; } @@ -204,8 +206,10 @@ jpeg_make_d_derived_tbl (j_decompress_ptr cinfo, boolean isDC, int tblno, /* code is now 1 more than the last code used for codelength si; but * it must still fit in si bits, since no code is allowed to be all ones. */ - if (((INT32) code) >= (((INT32) 1) << si)) + if (((INT32) code) >= (((INT32) 1) << si)) { + printf("JERR_BAD_HUFF_TABLE : (((INT32) code) >= (((INT32) 1) << si)) code %d si%d\v",code, si); ERREXIT(cinfo, JERR_BAD_HUFF_TABLE); + } code <<= 1; si++; } @@ -259,8 +263,14 @@ jpeg_make_d_derived_tbl (j_decompress_ptr cinfo, boolean isDC, int tblno, if (isDC) { for (i = 0; i < numsymbols; i++) { int sym = htbl->huffval[i]; - if (sym < 0 || sym > 15) - ERREXIT(cinfo, JERR_BAD_HUFF_TABLE); + //printf ("htbl->huffval[%d]=%d\n",i,htbl->huffval[i]); + if (sym < 0 || sym > 15) { + printf("JERR_BAD_HUFF_TABLE sym %d (>15)\n",sym); + //ERREXIT(cinfo, JERR_BAD_HUFF_TABLE); + // Sorry for the patch : + // Now, we can read Philips MRI Images + htbl->huffval[i]=15; + } } } }