[FFmpeg-devel] [PATCH]lavc/svq3: Do not write into const memory
Carl Eugen Hoyos
ceffmpeg at gmail.com
Fri Jan 19 20:19:25 EET 2018
2018-01-19 16:54 GMT+01:00 Tomas Härdin <tjoppen at acc.umu.se>:
> On 2018-01-18 23:34, Carl Eugen Hoyos wrote:
>>
>> Hi!
>>
>> Attached patch fixes a warning, I suspect it makes the code more correct.
>>
>> Please comment, Carl Eugen
>>
>
>> --- a/libavcodec/svq3.c
>> +++ b/libavcodec/svq3.c
>> @@ -1048,12 +1048,12 @@ static int svq3_decode_slice_header(AVCodecContext
>> *avctx)
>> }
>> memcpy(s->slice_buf, s->gb.buffer + s->gb.index / 8,
>> slice_bytes);
>> - init_get_bits(&s->gb_slice, s->slice_buf, slice_bits);
>
> Unrelated change?
No, it is an intended move.
>> if (s->watermark_key) {
>> - uint32_t header = AV_RL32(&s->gb_slice.buffer[1]);
>> - AV_WL32(&s->gb_slice.buffer[1], header ^ s->watermark_key);
>
> Strange that this didn't manage to break anything, or that the compiler
> let it through
A compiler's warning that gets fixed is the reason for this patch but
I apparently misunderstand your comment.
>> + uint32_t header = AV_RL32(&s->slice_buf[1]);
>> + AV_WL32(&s->slice_buf[1], header ^ s->watermark_key);
>
> Considering the memcpy() above, either this or the old code must be wrong.
Why do you think so?
(I do consider the old code "wrong", that is why I sent this patch.)
> My guess is the old code must have been wrong, since to fiddle
> the same bits this AV_WL32() would need to set
> &s->slice_buf[1 - s->gb.index / 8]...
I was hoping that the same bits get fiddled given that I call the
same macro / function...
Carl Eugen
More information about the ffmpeg-devel
mailing list