diff options
author | fwarmerdam <fwarmerdam> | 2012-06-06 05:33:55 +0000 |
---|---|---|
committer | fwarmerdam <fwarmerdam> | 2012-06-06 05:33:55 +0000 |
commit | 1c612555b839c370b56e933bc15d0df6376b0b5f (patch) | |
tree | dfe52df0258b01b3b8bbad0a093ed81df1ea9455 | |
parent | abbd5b1b86d87161e054b65c98af0931661be6ac (diff) | |
download | libtiff-1c612555b839c370b56e933bc15d0df6376b0b5f.tar.gz |
treat illegal ycbcrsubsampling as runtime error, not assertion
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | libtiff/tif_strip.c | 10 | ||||
-rw-r--r-- | libtiff/tif_tile.c | 11 |
3 files changed, 16 insertions, 9 deletions
@@ -1,5 +1,9 @@ 2012-06-05 Frank Warmerdam <warmerdam@google.com> + * libtiff/tif_tile.c, libtiff/tif_strip.c: Ensure that illegal + ycbcrsubsampling values result in a runtime error, not just an + assertion. + * tests/custom_dir.c: Add testing of EXIF and custom directory reading and writing. diff --git a/libtiff/tif_strip.c b/libtiff/tif_strip.c index 3ced5a8d..568e4898 100644 --- a/libtiff/tif_strip.c +++ b/libtiff/tif_strip.c @@ -1,4 +1,4 @@ -/* $Id: tif_strip.c,v 1.34 2011-04-02 20:54:09 bfriesen Exp $ */ +/* $Id: tif_strip.c,v 1.35 2012-06-06 05:33:55 fwarmerdam Exp $ */ /* * Copyright (c) 1991-1997 Sam Leffler @@ -107,11 +107,13 @@ TIFFVStripSize64(TIFF* tif, uint32 nrows) } TIFFGetFieldDefaulted(tif,TIFFTAG_YCBCRSUBSAMPLING,ycbcrsubsampling+0, ycbcrsubsampling+1); - if (((ycbcrsubsampling[0]!=1)&&(ycbcrsubsampling[0]!=2)&&(ycbcrsubsampling[0]!=4)) || - ((ycbcrsubsampling[1]!=1)&&(ycbcrsubsampling[1]!=2)&&(ycbcrsubsampling[1]!=4))) + if ((ycbcrsubsampling[0] != 1 && ycbcrsubsampling[0] != 2 && ycbcrsubsampling[0] != 4) + ||(ycbcrsubsampling[1] != 1 && ycbcrsubsampling[1] != 2 && ycbcrsubsampling[1] != 4)) { TIFFErrorExt(tif->tif_clientdata,module, - "Invalid YCbCr subsampling"); + "Invalid YCbCr subsampling (%dx%d)", + ycbcrsubsampling[0], + ycbcrsubsampling[1] ); return 0; } samplingblock_samples=ycbcrsubsampling[0]*ycbcrsubsampling[1]+2; diff --git a/libtiff/tif_tile.c b/libtiff/tif_tile.c index 062d943f..0ff7e853 100644 --- a/libtiff/tif_tile.c +++ b/libtiff/tif_tile.c @@ -1,4 +1,4 @@ -/* $Id: tif_tile.c,v 1.22 2010-07-01 15:33:28 dron Exp $ */ +/* $Id: tif_tile.c,v 1.23 2012-06-06 05:33:55 fwarmerdam Exp $ */ /* * Copyright (c) 1991-1997 Sam Leffler @@ -203,12 +203,13 @@ TIFFVTileSize64(TIFF* tif, uint32 nrows) uint64 samplingrow_size; TIFFGetFieldDefaulted(tif,TIFFTAG_YCBCRSUBSAMPLING,ycbcrsubsampling+0, ycbcrsubsampling+1); - assert((ycbcrsubsampling[0]==1)||(ycbcrsubsampling[0]==2)||(ycbcrsubsampling[0]==4)); - assert((ycbcrsubsampling[1]==1)||(ycbcrsubsampling[1]==2)||(ycbcrsubsampling[1]==4)); - if (ycbcrsubsampling[0]*ycbcrsubsampling[1]==0) + if ((ycbcrsubsampling[0] != 1 && ycbcrsubsampling[0] != 2 && ycbcrsubsampling[0] != 4) + ||(ycbcrsubsampling[1] != 1 && ycbcrsubsampling[1] != 2 && ycbcrsubsampling[1] != 4)) { TIFFErrorExt(tif->tif_clientdata,module, - "Invalid YCbCr subsampling"); + "Invalid YCbCr subsampling (%dx%d)", + ycbcrsubsampling[0], + ycbcrsubsampling[1] ); return 0; } samplingblock_samples=ycbcrsubsampling[0]*ycbcrsubsampling[1]+2; |