From 178cd50c47aa5b7db03f7ce7a3f2934857dbd35b Mon Sep 17 00:00:00 2001 From: Paul B Mahol Date: Fri, 24 Feb 2017 12:01:30 +0100 Subject: [PATCH] avcodec/scpr: make sure that component value is <= 0x1F for 16 bpc Signed-off-by: Paul B Mahol --- libavcodec/scpr.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libavcodec/scpr.c b/libavcodec/scpr.c index 5555d812e8..0802dd4d70 100644 --- a/libavcodec/scpr.c +++ b/libavcodec/scpr.c @@ -58,6 +58,7 @@ typedef struct SCPRContext { unsigned nbx, nby; unsigned nbcount; unsigned *blocks; + unsigned cbits; int cxshift; } SCPRContext; @@ -241,7 +242,7 @@ static int decode_unit(SCPRContext *s, PixelModel *pixel, unsigned step, unsigne } pixel->total_freq = totfr; - *rval = c; + *rval = c & s->cbits; return 0; } @@ -789,6 +790,7 @@ static av_cold int decode_init(AVCodecContext *avctx) } s->cxshift = avctx->bits_per_coded_sample == 16 ? 0 : 2; + s->cbits = avctx->bits_per_coded_sample == 16 ? 0x1F : 0xFF; s->nbx = (avctx->width + 15) / 16; s->nby = (avctx->height + 15) / 16; s->nbcount = s->nbx * s->nby;