1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2025-01-03 05:10:03 +02:00

avcodec/h261dec: Fix UB NULL + 0, remove broken resync code

last_resync_gb is never initialized, causing NULL + 0
in align_get_bits(). In addition to that, the loop is never
entered.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
This commit is contained in:
Andreas Rheinhardt 2024-06-10 07:16:28 +02:00
parent fb1acbc941
commit 18b059f208

View File

@ -172,7 +172,7 @@ static int h261_decode_gob_header(H261DecContext *h)
static int h261_resync(H261DecContext *h)
{
MpegEncContext *const s = &h->s;
int left, ret;
int ret;
if (h->gob_start_code_skipped) {
ret = h261_decode_gob_header(h);
@ -185,22 +185,6 @@ static int h261_resync(H261DecContext *h)
return 0;
}
// OK, it is not where it is supposed to be ...
s->gb = s->last_resync_gb;
align_get_bits(&s->gb);
left = get_bits_left(&s->gb);
for (; left > 15 + 1 + 4 + 5; left -= 8) {
if (show_bits(&s->gb, 15) == 0) {
GetBitContext bak = s->gb;
ret = h261_decode_gob_header(h);
if (ret >= 0)
return 0;
s->gb = bak;
}
skip_bits(&s->gb, 8);
}
}
return -1;