From 0356ea76bac908c61160d735f078437ace953bd3 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Mon, 11 Nov 2019 23:02:08 +0100 Subject: [PATCH] OJPEG: fix broken sanity check added in 4.1.0, and add two OJPEG test files --- libtiff/tif_ojpeg.c | 53 ++++++++---------- test/CMakeLists.txt | 8 ++- test/Makefile.am | 9 ++- .../ojpeg_chewey_subsamp21_multi_strip.tiff | Bin 0 -> 39752 bytes ...peg_zackthecat_subsamp22_single_strip.tiff | Bin 0 -> 8258 bytes ...f2bw-ojpeg_chewey_subsamp21_multi_strip.sh | 7 +++ ...ojpeg_zackthecat_subsamp22_single_strip.sh | 7 +++ ...rgba-ojpeg_chewey_subsamp21_multi_strip.sh | 7 +++ ...ojpeg_zackthecat_subsamp22_single_strip.sh | 7 +++ ...-R90-ojpeg_chewey_subsamp21_multi_strip.sh | 7 +++ ...ojpeg_zackthecat_subsamp22_single_strip.sh | 7 +++ ...flip-ojpeg_chewey_subsamp21_multi_strip.sh | 7 +++ ...ojpeg_zackthecat_subsamp22_single_strip.sh | 7 +++ ...ract-ojpeg_chewey_subsamp21_multi_strip.sh | 7 +++ ...ojpeg_zackthecat_subsamp22_single_strip.sh | 7 +++ ...tz14-ojpeg_chewey_subsamp21_multi_strip.sh | 7 +++ ...ojpeg_zackthecat_subsamp22_single_strip.sh | 7 +++ 17 files changed, 120 insertions(+), 34 deletions(-) create mode 100644 test/images/ojpeg_chewey_subsamp21_multi_strip.tiff create mode 100644 test/images/ojpeg_zackthecat_subsamp22_single_strip.tiff create mode 100755 test/tiff2bw-ojpeg_chewey_subsamp21_multi_strip.sh create mode 100755 test/tiff2bw-ojpeg_zackthecat_subsamp22_single_strip.sh create mode 100755 test/tiff2rgba-ojpeg_chewey_subsamp21_multi_strip.sh create mode 100755 test/tiff2rgba-ojpeg_zackthecat_subsamp22_single_strip.sh create mode 100755 test/tiffcrop-R90-ojpeg_chewey_subsamp21_multi_strip.sh create mode 100755 test/tiffcrop-R90-ojpeg_zackthecat_subsamp22_single_strip.sh create mode 100755 test/tiffcrop-doubleflip-ojpeg_chewey_subsamp21_multi_strip.sh create mode 100755 test/tiffcrop-doubleflip-ojpeg_zackthecat_subsamp22_single_strip.sh create mode 100755 test/tiffcrop-extract-ojpeg_chewey_subsamp21_multi_strip.sh create mode 100755 test/tiffcrop-extract-ojpeg_zackthecat_subsamp22_single_strip.sh create mode 100755 test/tiffcrop-extractz14-ojpeg_chewey_subsamp21_multi_strip.sh create mode 100755 test/tiffcrop-extractz14-ojpeg_zackthecat_subsamp22_single_strip.sh diff --git a/libtiff/tif_ojpeg.c b/libtiff/tif_ojpeg.c index bf0d1a2a..d6f7d97e 100644 --- a/libtiff/tif_ojpeg.c +++ b/libtiff/tif_ojpeg.c @@ -837,36 +837,6 @@ OJPEGDecodeRaw(TIFF* tif, uint8* buf, tmsize_t cc) { if (sp->subsampling_convert_state==0) { - const jpeg_decompress_struct* cinfo = &sp->libjpeg_jpeg_decompress_struct; - int width = 0; - int last_col_width = 0; - int jpeg_bytes; - int expected_bytes; - int i; - if (cinfo->MCUs_per_row == 0) - { - sp->error_in_raw_data_decoding = 1; - return 0; - } - for (i = 0; i < cinfo->comps_in_scan; ++i) - { - const jpeg_component_info* info = cinfo->cur_comp_info[i]; -#if JPEG_LIB_VERSION >= 70 - width += info->MCU_width * info->DCT_h_scaled_size; - last_col_width += info->last_col_width * info->DCT_h_scaled_size; -#else - width += info->MCU_width * info->DCT_scaled_size; - last_col_width += info->last_col_width * info->DCT_scaled_size; -#endif - } - jpeg_bytes = (cinfo->MCUs_per_row - 1) * width + last_col_width; - expected_bytes = sp->subsampling_convert_clinelenout * sp->subsampling_ver * sp->subsampling_hor; - if (jpeg_bytes != expected_bytes) - { - TIFFErrorExt(tif->tif_clientdata,module,"Inconsistent number of MCU in codestream"); - sp->error_in_raw_data_decoding = 1; - return(0); - } if (jpeg_read_raw_data_encap(sp,&(sp->libjpeg_jpeg_decompress_struct),sp->subsampling_convert_ycbcrimage,sp->subsampling_ver*8)==0) { sp->error_in_raw_data_decoding = 1; @@ -1291,6 +1261,29 @@ OJPEGWriteHeaderInfo(TIFF* tif) } if (jpeg_start_decompress_encap(sp,&(sp->libjpeg_jpeg_decompress_struct))==0) return(0); + if(sp->libjpeg_jpeg_decompress_struct.image_width != sp->strile_width || + sp->libjpeg_jpeg_decompress_struct.image_height < sp->strile_length) { + TIFFErrorExt(tif->tif_clientdata,module, + "jpeg_start_decompress() returned image_width = %d " + "and image_height = %d, expected %d and %d", + sp->libjpeg_jpeg_decompress_struct.image_width, + sp->libjpeg_jpeg_decompress_struct.image_height, + sp->strile_width, + sp->strile_length); + return 0; + } + if(sp->libjpeg_jpeg_decompress_struct.max_h_samp_factor != sp->subsampling_hor || + sp->libjpeg_jpeg_decompress_struct.max_v_samp_factor != sp->subsampling_ver) { + TIFFErrorExt(tif->tif_clientdata,module, + "jpeg_start_decompress() returned max_h_samp_factor = %d " + "and max_v_samp_factor = %d, expected %d and %d", + sp->libjpeg_jpeg_decompress_struct.max_h_samp_factor, + sp->libjpeg_jpeg_decompress_struct.max_v_samp_factor, + sp->subsampling_hor, + sp->subsampling_ver); + return 0; + } + sp->writeheader_done=1; return(1); } diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index a4216d56..c89bb824 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -105,7 +105,9 @@ set(TESTSCRIPTS tiff2rgba-palette-1c-8b.sh tiff2rgba-rgb-3c-16b.sh tiff2rgba-rgb-3c-8b.sh - tiff2rgba-quad-tile.jpg.sh) + tiff2rgba-quad-tile.jpg.sh + tiff2rgba-ojpeg_zackthecat_subsamp22_single_strip.sh + tiff2rgba-ojpeg_chewey_subsamp21_multi_strip.sh) # This list should contain all of the TIFF files in the 'images' # subdirectory which are intended to be used as input images for @@ -123,7 +125,9 @@ set(TIFFIMAGES images/rgb-3c-8b.tiff images/quad-tile.jpg.tiff images/quad-lzw-compat.tiff - images/lzw-single-strip.tiff) + images/lzw-single-strip.tiff + images/ojpeg_zackthecat_subsamp22_single_strip.tiff + images/ojpeg_chewey_subsamp21_multi_strip.tiff) set(BMPIMAGES images/palette-1c-8b.bmp diff --git a/test/Makefile.am b/test/Makefile.am index 90c2f3d1..420d7523 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -55,7 +55,10 @@ CLEANFILES = test_packbits.tif o-* if HAVE_JPEG JPEG_DEPENDENT_CHECK_PROG=raw_decode JPEG_DEPENDENT_TESTSCRIPTS=\ - tiff2rgba-quad-tile.jpg.sh + tiff2rgba-quad-tile.jpg.sh \ + tiff2rgba-ojpeg_zackthecat_subsamp22_single_strip.sh \ + tiff2rgba-ojpeg_chewey_subsamp21_multi_strip.sh + else JPEG_DEPENDENT_CHECK_PROG= JPEG_DEPENDENT_TESTSCRIPTS= @@ -171,7 +174,9 @@ TIFFIMAGES = \ images/rgb-3c-8b.tiff \ images/quad-tile.jpg.tiff \ images/quad-lzw-compat.tiff \ - images/lzw-single-strip.tiff + images/lzw-single-strip.tiff \ + images/ojpeg_zackthecat_subsamp22_single_strip.tiff \ + images/ojpeg_chewey_subsamp21_multi_strip.tiff PNMIMAGES = \ images/minisblack-1c-8b.pgm \ diff --git a/test/images/ojpeg_chewey_subsamp21_multi_strip.tiff b/test/images/ojpeg_chewey_subsamp21_multi_strip.tiff new file mode 100644 index 0000000000000000000000000000000000000000..8b04d473dc590b36aad5be1b93e16a8c00170345 GIT binary patch literal 39752 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 literal 0 HcmV?d00001 diff --git a/test/tiff2bw-ojpeg_chewey_subsamp21_multi_strip.sh b/test/tiff2bw-ojpeg_chewey_subsamp21_multi_strip.sh new file mode 100755 index 00000000..61a2ccf5 --- /dev/null +++ b/test/tiff2bw-ojpeg_chewey_subsamp21_multi_strip.sh @@ -0,0 +1,7 @@ +#!/bin/sh +# Generated file, master is Makefile.am +. ${srcdir:-.}/common.sh +infile="$srcdir/images/ojpeg_chewey_subsamp21_multi_strip.tiff" +outfile="o-tiff2bw-ojpeg_chewey_subsamp21_multi_strip.tiff" +f_test_convert "$TIFF2BW" $infile $outfile +f_tiffinfo_validate $outfile diff --git a/test/tiff2bw-ojpeg_zackthecat_subsamp22_single_strip.sh b/test/tiff2bw-ojpeg_zackthecat_subsamp22_single_strip.sh new file mode 100755 index 00000000..7b09ded9 --- /dev/null +++ b/test/tiff2bw-ojpeg_zackthecat_subsamp22_single_strip.sh @@ -0,0 +1,7 @@ +#!/bin/sh +# Generated file, master is Makefile.am +. ${srcdir:-.}/common.sh +infile="$srcdir/images/ojpeg_zackthecat_subsamp22_single_strip.tiff" +outfile="o-tiff2bw-ojpeg_zackthecat_subsamp22_single_strip.tiff" +f_test_convert "$TIFF2BW" $infile $outfile +f_tiffinfo_validate $outfile diff --git a/test/tiff2rgba-ojpeg_chewey_subsamp21_multi_strip.sh b/test/tiff2rgba-ojpeg_chewey_subsamp21_multi_strip.sh new file mode 100755 index 00000000..d1225c94 --- /dev/null +++ b/test/tiff2rgba-ojpeg_chewey_subsamp21_multi_strip.sh @@ -0,0 +1,7 @@ +#!/bin/sh +# Generated file, master is Makefile.am +. ${srcdir:-.}/common.sh +infile="$srcdir/images/ojpeg_chewey_subsamp21_multi_strip.tiff" +outfile="o-tiff2rgba-ojpeg_chewey_subsamp21_multi_strip.tiff" +f_test_convert "$TIFF2RGBA" $infile $outfile +f_tiffinfo_validate $outfile diff --git a/test/tiff2rgba-ojpeg_zackthecat_subsamp22_single_strip.sh b/test/tiff2rgba-ojpeg_zackthecat_subsamp22_single_strip.sh new file mode 100755 index 00000000..ca23a12d --- /dev/null +++ b/test/tiff2rgba-ojpeg_zackthecat_subsamp22_single_strip.sh @@ -0,0 +1,7 @@ +#!/bin/sh +# Generated file, master is Makefile.am +. ${srcdir:-.}/common.sh +infile="$srcdir/images/ojpeg_zackthecat_subsamp22_single_strip.tiff" +outfile="o-tiff2rgba-ojpeg_zackthecat_subsamp22_single_strip.tiff" +f_test_convert "$TIFF2RGBA" $infile $outfile +f_tiffinfo_validate $outfile diff --git a/test/tiffcrop-R90-ojpeg_chewey_subsamp21_multi_strip.sh b/test/tiffcrop-R90-ojpeg_chewey_subsamp21_multi_strip.sh new file mode 100755 index 00000000..41df587d --- /dev/null +++ b/test/tiffcrop-R90-ojpeg_chewey_subsamp21_multi_strip.sh @@ -0,0 +1,7 @@ +#!/bin/sh +# Generated file, master is Makefile.am +. ${srcdir:-.}/common.sh +infile="$srcdir/images/ojpeg_chewey_subsamp21_multi_strip.tiff" +outfile="o-tiffcrop-R90-ojpeg_chewey_subsamp21_multi_strip.tiff" +f_test_convert "$TIFFCROP -R90" $infile $outfile +f_tiffinfo_validate $outfile diff --git a/test/tiffcrop-R90-ojpeg_zackthecat_subsamp22_single_strip.sh b/test/tiffcrop-R90-ojpeg_zackthecat_subsamp22_single_strip.sh new file mode 100755 index 00000000..61f8fc41 --- /dev/null +++ b/test/tiffcrop-R90-ojpeg_zackthecat_subsamp22_single_strip.sh @@ -0,0 +1,7 @@ +#!/bin/sh +# Generated file, master is Makefile.am +. ${srcdir:-.}/common.sh +infile="$srcdir/images/ojpeg_zackthecat_subsamp22_single_strip.tiff" +outfile="o-tiffcrop-R90-ojpeg_zackthecat_subsamp22_single_strip.tiff" +f_test_convert "$TIFFCROP -R90" $infile $outfile +f_tiffinfo_validate $outfile diff --git a/test/tiffcrop-doubleflip-ojpeg_chewey_subsamp21_multi_strip.sh b/test/tiffcrop-doubleflip-ojpeg_chewey_subsamp21_multi_strip.sh new file mode 100755 index 00000000..3196ae1d --- /dev/null +++ b/test/tiffcrop-doubleflip-ojpeg_chewey_subsamp21_multi_strip.sh @@ -0,0 +1,7 @@ +#!/bin/sh +# Generated file, master is Makefile.am +. ${srcdir:-.}/common.sh +infile="$srcdir/images/ojpeg_chewey_subsamp21_multi_strip.tiff" +outfile="o-tiffcrop-doubleflip-ojpeg_chewey_subsamp21_multi_strip.tiff" +f_test_convert "$TIFFCROP -F both" $infile $outfile +f_tiffinfo_validate $outfile diff --git a/test/tiffcrop-doubleflip-ojpeg_zackthecat_subsamp22_single_strip.sh b/test/tiffcrop-doubleflip-ojpeg_zackthecat_subsamp22_single_strip.sh new file mode 100755 index 00000000..6ce71d4f --- /dev/null +++ b/test/tiffcrop-doubleflip-ojpeg_zackthecat_subsamp22_single_strip.sh @@ -0,0 +1,7 @@ +#!/bin/sh +# Generated file, master is Makefile.am +. ${srcdir:-.}/common.sh +infile="$srcdir/images/ojpeg_zackthecat_subsamp22_single_strip.tiff" +outfile="o-tiffcrop-doubleflip-ojpeg_zackthecat_subsamp22_single_strip.tiff" +f_test_convert "$TIFFCROP -F both" $infile $outfile +f_tiffinfo_validate $outfile diff --git a/test/tiffcrop-extract-ojpeg_chewey_subsamp21_multi_strip.sh b/test/tiffcrop-extract-ojpeg_chewey_subsamp21_multi_strip.sh new file mode 100755 index 00000000..bb30f9bd --- /dev/null +++ b/test/tiffcrop-extract-ojpeg_chewey_subsamp21_multi_strip.sh @@ -0,0 +1,7 @@ +#!/bin/sh +# Generated file, master is Makefile.am +. ${srcdir:-.}/common.sh +infile="$srcdir/images/ojpeg_chewey_subsamp21_multi_strip.tiff" +outfile="o-tiffcrop-extract-ojpeg_chewey_subsamp21_multi_strip.tiff" +f_test_convert "$TIFFCROP -U px -E top -X 60 -Y 60" $infile $outfile +f_tiffinfo_validate $outfile diff --git a/test/tiffcrop-extract-ojpeg_zackthecat_subsamp22_single_strip.sh b/test/tiffcrop-extract-ojpeg_zackthecat_subsamp22_single_strip.sh new file mode 100755 index 00000000..ce06a261 --- /dev/null +++ b/test/tiffcrop-extract-ojpeg_zackthecat_subsamp22_single_strip.sh @@ -0,0 +1,7 @@ +#!/bin/sh +# Generated file, master is Makefile.am +. ${srcdir:-.}/common.sh +infile="$srcdir/images/ojpeg_zackthecat_subsamp22_single_strip.tiff" +outfile="o-tiffcrop-extract-ojpeg_zackthecat_subsamp22_single_strip.tiff" +f_test_convert "$TIFFCROP -U px -E top -X 60 -Y 60" $infile $outfile +f_tiffinfo_validate $outfile diff --git a/test/tiffcrop-extractz14-ojpeg_chewey_subsamp21_multi_strip.sh b/test/tiffcrop-extractz14-ojpeg_chewey_subsamp21_multi_strip.sh new file mode 100755 index 00000000..81d66249 --- /dev/null +++ b/test/tiffcrop-extractz14-ojpeg_chewey_subsamp21_multi_strip.sh @@ -0,0 +1,7 @@ +#!/bin/sh +# Generated file, master is Makefile.am +. ${srcdir:-.}/common.sh +infile="$srcdir/images/ojpeg_chewey_subsamp21_multi_strip.tiff" +outfile="o-tiffcrop-extractz14-ojpeg_chewey_subsamp21_multi_strip.tiff" +f_test_convert "$TIFFCROP -E left -Z1:4,2:4" $infile $outfile +f_tiffinfo_validate $outfile diff --git a/test/tiffcrop-extractz14-ojpeg_zackthecat_subsamp22_single_strip.sh b/test/tiffcrop-extractz14-ojpeg_zackthecat_subsamp22_single_strip.sh new file mode 100755 index 00000000..e6c3c5f3 --- /dev/null +++ b/test/tiffcrop-extractz14-ojpeg_zackthecat_subsamp22_single_strip.sh @@ -0,0 +1,7 @@ +#!/bin/sh +# Generated file, master is Makefile.am +. ${srcdir:-.}/common.sh +infile="$srcdir/images/ojpeg_zackthecat_subsamp22_single_strip.tiff" +outfile="o-tiffcrop-extractz14-ojpeg_zackthecat_subsamp22_single_strip.tiff" +f_test_convert "$TIFFCROP -E left -Z1:4,2:4" $infile $outfile +f_tiffinfo_validate $outfile