[FFmpeg-devel] [PATCH 2/2] avformat/dashdec: Avoid segfault when URL template is unexpectedly missing
sfan5
sfan5 at live.de
Mon Jan 25 17:25:08 EET 2021
This isn't supposed to happen, but unfinished support for non-templated
manifests and lack of e.g. presentationTimeOffset handling can provoke
such a situation even with well-formed input.
---
libavformat/dashdec.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/libavformat/dashdec.c b/libavformat/dashdec.c
index dc56e89f11..c4e6c3da16 100644
--- a/libavformat/dashdec.c
+++ b/libavformat/dashdec.c
@@ -1625,8 +1625,15 @@ static struct fragment
*get_current_fragment(struct representation *pls)
}
}
if (seg) {
- char *tmpfilename= av_mallocz(c->max_url_size);
+ char *tmpfilename;
+ if (!pls->url_template) {
+ av_log(pls->parent, AV_LOG_ERROR, "Cannot get fragment,
missing template URL\n");
+ av_free(seg);
+ return NULL;
+ }
+ tmpfilename = av_mallocz(c->max_url_size);
if (!tmpfilename) {
+ av_free(seg);
return NULL;
}
ff_dash_fill_tmpl_params(tmpfilename, c->max_url_size,
pls->url_template, 0, pls->cur_seq_no, 0,
get_segment_start_time_based_on_timeline(pls, pls->cur_seq_no));
@@ -1637,6 +1644,7 @@ static struct fragment
*get_current_fragment(struct representation *pls)
if (!seg->url) {
av_log(pls->parent, AV_LOG_ERROR, "Cannot resolve
template url '%s'\n", pls->url_template);
av_free(tmpfilename);
+ av_free(seg);
return NULL;
}
}
--
2.30.0
More information about the ffmpeg-devel
mailing list