Mercurial > libavformat.hg
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).