]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/diracdec.c
lavc: Check CODEC_CAP_VARIABLE_FRAME_SIZE && !frame
[ffmpeg] / libavcodec / diracdec.c
index db2cb0fba8270cce2a855734d41c91986d553377..1bc73349e018a2828fb7764afd01190b4fd4f94c 100644 (file)
@@ -1836,7 +1836,8 @@ static int dirac_decode_frame(AVCodecContext *avctx, void *data, int *data_size,
             break;
 
         data_unit_size = AV_RB32(buf+buf_idx+5);
-        if (buf_idx + data_unit_size > buf_size) {
+        if (buf_idx + data_unit_size > buf_size || !data_unit_size) {
+            if(buf_idx + data_unit_size > buf_size)
             av_log(s->avctx, AV_LOG_ERROR,
                    "Data unit with size %d is larger than input buffer, discarding\n",
                    data_unit_size);
@@ -1897,7 +1898,6 @@ AVCodec ff_dirac_decoder = {
     .id             = CODEC_ID_DIRAC,
     .priv_data_size = sizeof(DiracContext),
     .init           = dirac_decode_init,
-    .encode         = NULL,
     .close          = dirac_decode_end,
     .decode         = dirac_decode_frame,
     .capabilities   = CODEC_CAP_DELAY,