exr: fix out-of-bounds read
channel_index can be -1. This problem was introduced in commit2dd7b46132
. Reviewed-by: Paul B Mahol <onemda@gmail.com> Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com> (cherry picked from commitffdc5d09e4
) Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
This commit is contained in:
@@ -1428,8 +1428,7 @@ static int decode_header(EXRContext *s)
|
|||||||
return AVERROR_PATCHWELCOME;
|
return AVERROR_PATCHWELCOME;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (s->channel_offsets[channel_index] == -1){/* channel have not been previously assign */
|
if (channel_index >= 0 && s->channel_offsets[channel_index] == -1) { /* channel has not been previously assigned */
|
||||||
if (channel_index >= 0) {
|
|
||||||
if (s->pixel_type != EXR_UNKNOWN &&
|
if (s->pixel_type != EXR_UNKNOWN &&
|
||||||
s->pixel_type != current_pixel_type) {
|
s->pixel_type != current_pixel_type) {
|
||||||
av_log(s->avctx, AV_LOG_ERROR,
|
av_log(s->avctx, AV_LOG_ERROR,
|
||||||
@@ -1438,7 +1437,6 @@ static int decode_header(EXRContext *s)
|
|||||||
}
|
}
|
||||||
s->pixel_type = current_pixel_type;
|
s->pixel_type = current_pixel_type;
|
||||||
s->channel_offsets[channel_index] = s->current_channel_offset;
|
s->channel_offsets[channel_index] = s->current_channel_offset;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
s->channels = av_realloc(s->channels,
|
s->channels = av_realloc(s->channels,
|
||||||
|
Reference in New Issue
Block a user