avcodec/tiff: Check value on positive signed targets

Fixes: CID1604593 Overflowed constant

Sponsored-by: Sovereign Tech Fund
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
release/7.1
Michael Niedermayer 6 months ago
parent 19a5a8997c
commit 66d6b8033b
No known key found for this signature in database
GPG Key ID: B18E8928B3948D64
  1. 20
      libavcodec/tiff.c

@ -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) {\

Loading…
Cancel
Save