From 4ed899f2c5848b75b61d13ad42942ecc2a4386f9 Mon Sep 17 00:00:00 2001
From: Andrew Wason <rectalogic@rectalogic.com>
Date: Thu, 2 Sep 2010 11:51:32 +0000
Subject: [PATCH] Fix crash when decoding DV in AVI introduced in r24579 (issue
 2174).

Patch by Andrew Wason, rectalogic rectalogic com

Originally committed as revision 25023 to svn://svn.ffmpeg.org/ffmpeg/trunk
---
 libavformat/avidec.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/libavformat/avidec.c b/libavformat/avidec.c
index 9a56bbca69b..f5b5c21a350 100644
--- a/libavformat/avidec.c
+++ b/libavformat/avidec.c
@@ -759,7 +759,7 @@ static AVStream *get_subtitle_pkt(AVFormatContext *s, AVStream *next_st,
     for (i=0; i<s->nb_streams; i++) {
         st  = s->streams[i];
         ast = st->priv_data;
-        if (st->discard < AVDISCARD_ALL && ast->sub_pkt.data) {
+        if (st->discard < AVDISCARD_ALL && ast && ast->sub_pkt.data) {
             ts = av_rescale_q(ast->sub_pkt.dts, st->time_base, AV_TIME_BASE_Q);
             if (ts <= next_ts && ts < ts_min) {
                 ts_min = ts;
@@ -1294,12 +1294,14 @@ static int avi_read_close(AVFormatContext *s)
         AVStream *st = s->streams[i];
         AVIStream *ast = st->priv_data;
         av_free(st->codec->palctrl);
+        if (ast) {
         if (ast->sub_ctx) {
             av_freep(&ast->sub_ctx->pb);
             av_close_input_stream(ast->sub_ctx);
         }
         av_free(ast->sub_buffer);
         av_free_packet(&ast->sub_pkt);
+        }
     }
 
     if (avi->dv_demux)
-- 
GitLab