From d5f7a428b1e73b192fa9c9f2447790fbde675663 Mon Sep 17 00:00:00 2001 From: Marton Balint Date: Sun, 3 Aug 2025 01:12:20 +0200 Subject: [PATCH] avcodec/dvbsubenc: fix 256 color rle decoding The end of 8-bit/pixel_code_string() is signalled with two zero bytes, so we should read those from the buffer instead of one. We keep supporting though our own buggy encoder which only put one zero byte there. Signed-off-by: Marton Balint --- libavcodec/dvbsubdec.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libavcodec/dvbsubdec.c b/libavcodec/dvbsubdec.c index 4af3feeb09..9ecd96df86 100644 --- a/libavcodec/dvbsubdec.c +++ b/libavcodec/dvbsubdec.c @@ -660,6 +660,10 @@ static int dvbsub_read_8bit_string(AVCodecContext *avctx, if (bytestream2_get_byte(gb)) av_log(avctx, AV_LOG_ERROR, "line overflow\n"); + /* Workaround our own buggy encoder which only put one zero at the end */ + if (!bytestream2_peek_byte(gb)) + bytestream2_get_byte(gb); + *srcbuf += bytestream2_tell(gb); return pixels_read; }