| From b7cf0d47dfcdebb5625b84202040929aefa6e828 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Thu, 23 Aug 2018 04:10:05 -0400 |
| Subject: media: vicodec: fix out-of-range values when decoding |
| |
| From: Hans Verkuil <hverkuil@xs4all.nl> |
| |
| [ Upstream commit be5a1509af8dd8a78fea24a35fe4a82d4cd0ae70 ] |
| |
| While decoding you need to make sure you do not get values < 0 |
| or > 255. Note that since this code will also be used in userspace |
| utilities the clamp macro isn't used since that is kernel-only. |
| |
| Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> |
| Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/media/platform/vicodec/vicodec-codec.c | 10 ++++++++-- |
| 1 file changed, 8 insertions(+), 2 deletions(-) |
| |
| diff --git a/drivers/media/platform/vicodec/vicodec-codec.c b/drivers/media/platform/vicodec/vicodec-codec.c |
| index 2d047646f6147..d854b2344f12b 100644 |
| --- a/drivers/media/platform/vicodec/vicodec-codec.c |
| +++ b/drivers/media/platform/vicodec/vicodec-codec.c |
| @@ -588,8 +588,14 @@ static void fill_decoder_block(u8 *dst, const s16 *input, int stride) |
| int i, j; |
| |
| for (i = 0; i < 8; i++) { |
| - for (j = 0; j < 8; j++) |
| - *dst++ = *input++; |
| + for (j = 0; j < 8; j++, input++, dst++) { |
| + if (*input < 0) |
| + *dst = 0; |
| + else if (*input > 255) |
| + *dst = 255; |
| + else |
| + *dst = *input; |
| + } |
| dst += stride - 8; |
| } |
| } |
| -- |
| 2.20.1 |
| |