[FFmpeg-devel] [PATCH 2/2] avformat/dashdec: Avoid segfault when URL template is unexpectedly missing
Steven Liu
lingjiujianke at gmail.com
Tue Jan 26 03:22:45 EET 2021
sfan5 <sfan5 at live.de> 于2021年1月25日周一 下午11:25写道:
>
> 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
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
LGTM
Thanks
Steven
More information about the ffmpeg-devel
mailing list