]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/dvdsubdec.c
avcodec/alsdec: Discard frames for which no channel could be decoded
[ffmpeg] / libavcodec / dvdsubdec.c
index 13d52c8c688b9ce9a566c8edf3815fcc8fb07c2f..741ea9fd1e7377d946e1c4464681e9836a0fe4a9 100644 (file)
@@ -125,6 +125,8 @@ static int decode_rle(uint8_t *bitmap, int linesize, int w, int h, uint8_t used_
             len = decode_run_8bit(&gb, &color);
         else
             len = decode_run_2bit(&gb, &color);
+        if (len != INT_MAX && len > w - x)
+            return AVERROR_INVALIDDATA;
         len = FFMIN(len, w - x);
         memset(d + x, color, len);
         used_color[color] = 1;
@@ -593,6 +595,7 @@ static int dvdsub_decode(AVCodecContext *avctx,
     }
 
     if (is_menu < 0) {
+        ctx->buf_size = 0;
     no_subtitle:
         reset_rects(sub);
         *data_size = 0;