changeset 6234:0287312dda71 libavformat

rtpdec_asf: Propagate errors from the chained av_open_input_stream This fixes the crash in issue 2070.
author mstorsjo
date Mon, 05 Jul 2010 16:46:00 +0000
parents 2842c3ff0e37
children 9be5a847f59c
files rtpdec_asf.c rtpdec_asf.h
diffstat 2 files changed, 7 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/rtpdec_asf.c	Mon Jul 05 09:11:45 2010 +0000
+++ b/rtpdec_asf.c	Mon Jul 05 16:46:00 2010 +0000
@@ -91,8 +91,9 @@
     pb->buf_end = buf + len;
 }
 
-void ff_wms_parse_sdp_a_line(AVFormatContext *s, const char *p)
+int ff_wms_parse_sdp_a_line(AVFormatContext *s, const char *p)
 {
+    int ret = 0;
     if (av_strstart(p, "pgmpu:data:application/vnd.ms.wms-hdr.asfv1;base64,", &p)) {
         ByteIOContext pb;
         RTSPState *rt = s->priv_data;
@@ -108,11 +109,14 @@
             av_close_input_stream(rt->asf_ctx);
             rt->asf_ctx = NULL;
         }
-        av_open_input_stream(&rt->asf_ctx, &pb, "", &asf_demuxer, NULL);
+        ret = av_open_input_stream(&rt->asf_ctx, &pb, "", &asf_demuxer, NULL);
+        if (ret < 0)
+            return ret;
         rt->asf_pb_pos = url_ftell(&pb);
         av_free(buf);
         rt->asf_ctx->pb = NULL;
     }
+    return ret;
 }
 
 static int asfrtp_parse_sdp_line(AVFormatContext *s, int stream_index,
--- a/rtpdec_asf.h	Mon Jul 05 09:11:45 2010 +0000
+++ b/rtpdec_asf.h	Mon Jul 05 16:46:00 2010 +0000
@@ -30,7 +30,7 @@
  *
  * @param s RTSP demux context
  */
-void ff_wms_parse_sdp_a_line(AVFormatContext *s, const char *p);
+int ff_wms_parse_sdp_a_line(AVFormatContext *s, const char *p);
 
 /**
  * Handlers for the x-asf-pf payloads (the payload ID for RTP/ASF).