[FFmpeg-devel] [PATCH]lavc/r210enc: Fix undefined behaviour encoding r10k

Michael Niedermayer michael at niedermayer.cc
Mon Jul 1 21:27:33 EEST 2019


On Mon, Jul 01, 2019 at 01:08:34PM +0200, Carl Eugen Hoyos wrote:
> Hi!
> 
> Attached patch fixes an invalid left shift reported in ticket #7982.
> 
> Please comment, Carl Eugen

>  r210enc.c |    6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 9db2195a8e6d3c90726c2bf92119ff6043d4dd99  0001-lavc-r210enc-Fix-undefined-behaviour-encoding-r10k.patch
> From cfe1ae9a1e95dee72ff0e0a45ce8caab98a1bd0b Mon Sep 17 00:00:00 2001
> From: Carl Eugen Hoyos <ceffmpeg at gmail.com>
> Date: Mon, 1 Jul 2019 13:06:02 +0200
> Subject: [PATCH] lavc/r210enc: Fix undefined behaviour encoding r10k.
> 
> Fixes the following ubsan error:
> libavcodec/r210enc.c:69:28: runtime error: left shift of 522 by 22 places cannot be represented in type 'int'
> 
> Fixes ticket #7982.
> ---
>  libavcodec/r210enc.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/libavcodec/r210enc.c b/libavcodec/r210enc.c
> index 02412f3684..95049089bc 100644
> --- a/libavcodec/r210enc.c
> +++ b/libavcodec/r210enc.c
> @@ -60,9 +60,9 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt,
>          uint16_t *srcb = (uint16_t *)srcb_line;
>          for (j = 0; j < avctx->width; j++) {
>              uint32_t pixel;
> -            uint16_t r = *srcr++;
> -            uint16_t g = *srcg++;
> -            uint16_t b = *srcb++;
> +            uint32_t r = *srcr++;
> +            uint32_t g = *srcg++;
> +            uint32_t b = *srcb++;
>              if (avctx->codec_id == AV_CODEC_ID_R210)
>                  pixel = (r << 20) | (g << 10) | b;

I think plain unsigned is a less confusing choice here, but either is
ok
(uint32_t can make the reader confuse the source with 32bit pointers)

Thanks

[...]

-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

If you drop bombs on a foreign country and kill a hundred thousand
innocent people, expect your government to call the consequence
"unprovoked inhuman terrorist attacks" and use it to justify dropping
more bombs and killing more people. The technology changed, the idea is old.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20190701/63a56ac5/attachment.sig>


More information about the ffmpeg-devel mailing list