|
|
@ -1298,9 +1298,13 @@ static int tiff_decode_tag(TiffContext *s, AVFrame *frame) |
|
|
|
s->is_thumbnail = (value != 0); |
|
|
|
s->is_thumbnail = (value != 0); |
|
|
|
break; |
|
|
|
break; |
|
|
|
case TIFF_WIDTH: |
|
|
|
case TIFF_WIDTH: |
|
|
|
|
|
|
|
if (value > INT_MAX) |
|
|
|
|
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
s->width = value; |
|
|
|
s->width = value; |
|
|
|
break; |
|
|
|
break; |
|
|
|
case TIFF_HEIGHT: |
|
|
|
case TIFF_HEIGHT: |
|
|
|
|
|
|
|
if (value > INT_MAX) |
|
|
|
|
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
s->height = value; |
|
|
|
s->height = value; |
|
|
|
break; |
|
|
|
break; |
|
|
|
case TIFF_BPP: |
|
|
|
case TIFF_BPP: |
|
|
@ -1432,12 +1436,18 @@ static int tiff_decode_tag(TiffContext *s, AVFrame *frame) |
|
|
|
s->tile_byte_counts_offset = off; |
|
|
|
s->tile_byte_counts_offset = off; |
|
|
|
break; |
|
|
|
break; |
|
|
|
case TIFF_TILE_LENGTH: |
|
|
|
case TIFF_TILE_LENGTH: |
|
|
|
|
|
|
|
if (value > INT_MAX) |
|
|
|
|
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
s->tile_length = value; |
|
|
|
s->tile_length = value; |
|
|
|
break; |
|
|
|
break; |
|
|
|
case TIFF_TILE_WIDTH: |
|
|
|
case TIFF_TILE_WIDTH: |
|
|
|
|
|
|
|
if (value > INT_MAX) |
|
|
|
|
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
s->tile_width = value; |
|
|
|
s->tile_width = value; |
|
|
|
break; |
|
|
|
break; |
|
|
|
case TIFF_PREDICTOR: |
|
|
|
case TIFF_PREDICTOR: |
|
|
|
|
|
|
|
if (value > INT_MAX) |
|
|
|
|
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
s->predictor = value; |
|
|
|
s->predictor = value; |
|
|
|
break; |
|
|
|
break; |
|
|
|
case TIFF_SUB_IFDS: |
|
|
|
case TIFF_SUB_IFDS: |
|
|
@ -1582,12 +1592,18 @@ static int tiff_decode_tag(TiffContext *s, AVFrame *frame) |
|
|
|
} |
|
|
|
} |
|
|
|
break; |
|
|
|
break; |
|
|
|
case TIFF_T4OPTIONS: |
|
|
|
case TIFF_T4OPTIONS: |
|
|
|
if (s->compr == TIFF_G3) |
|
|
|
if (s->compr == TIFF_G3) { |
|
|
|
|
|
|
|
if (value > INT_MAX) |
|
|
|
|
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
s->fax_opts = value; |
|
|
|
s->fax_opts = value; |
|
|
|
|
|
|
|
} |
|
|
|
break; |
|
|
|
break; |
|
|
|
case TIFF_T6OPTIONS: |
|
|
|
case TIFF_T6OPTIONS: |
|
|
|
if (s->compr == TIFF_G4) |
|
|
|
if (s->compr == TIFF_G4) { |
|
|
|
|
|
|
|
if (value > INT_MAX) |
|
|
|
|
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
s->fax_opts = value; |
|
|
|
s->fax_opts = value; |
|
|
|
|
|
|
|
} |
|
|
|
break; |
|
|
|
break; |
|
|
|
#define ADD_METADATA(count, name, sep)\ |
|
|
|
#define ADD_METADATA(count, name, sep)\ |
|
|
|
if ((ret = add_metadata(count, type, name, sep, s, frame)) < 0) {\
|
|
|
|
if ((ret = add_metadata(count, type, name, sep, s, frame)) < 0) {\
|
|
|
|