avcodec/svq3: perform residual slice copy before xor'ing watermark key

Fixes ticket #5387
This commit is contained in:
Peter Ross 2022-11-01 10:16:43 +11:00
parent 12733c0cbd
commit 95386b7b65
1 changed files with 4 additions and 3 deletions

View File

@ -1037,15 +1037,16 @@ static int svq3_decode_slice_header(AVCodecContext *avctx)
}
memcpy(s->slice_buf, s->gb.buffer + s->gb.index / 8, slice_bytes);
if (length > 0) {
memmove(s->slice_buf, &s->slice_buf[slice_length], length - 1);
}
if (s->watermark_key) {
uint32_t header = AV_RL32(&s->slice_buf[1]);
AV_WL32(&s->slice_buf[1], header ^ s->watermark_key);
}
init_get_bits(&s->gb_slice, s->slice_buf, slice_bits);
if (length > 0) {
memmove(s->slice_buf, &s->slice_buf[slice_length], length - 1);
}
skip_bits_long(&s->gb, slice_bytes * 8);
}