diff options
author | Marton Balint <cus@passwd.hu> | 2018-05-13 22:14:22 +0200 |
---|---|---|
committer | Marton Balint <cus@passwd.hu> | 2018-05-15 22:18:58 +0200 |
commit | 2dbe936bf7f9e0fe7e8f05e5c3b78fb1afbff164 (patch) | |
tree | 4015b8f633fd61779177ea26ec82a5cccf893885 | |
parent | 64bf915cd851ab604cb87cd463725fd1c6460a1c (diff) | |
download | ffmpeg-2dbe936bf7f9e0fe7e8f05e5c3b78fb1afbff164.tar.gz |
avformat/webm_chunk: always use a static buffer for get_chunk_filename
My conversation from AVFormatContext->filename to AVFormatContext->url was
wrong in this case because get_chunk_filename uses filename as an output
buffer, and not as an input buffer.
Fixes ticket #7188.
Signed-off-by: Marton Balint <cus@passwd.hu>
-rw-r--r-- | libavformat/webm_chunk.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/libavformat/webm_chunk.c b/libavformat/webm_chunk.c index 549ec2879a..7ceb276fc4 100644 --- a/libavformat/webm_chunk.c +++ b/libavformat/webm_chunk.c @@ -114,6 +114,8 @@ static int webm_chunk_write_header(AVFormatContext *s) int ret; int i; AVDictionary *options = NULL; + char oc_filename[MAX_FILENAME_SIZE]; + char *oc_url; // DASH Streams can only have either one track per file. if (s->nb_streams != 1) { return AVERROR_INVALIDDATA; } @@ -127,9 +129,13 @@ static int webm_chunk_write_header(AVFormatContext *s) if (ret < 0) return ret; oc = wc->avf; - ret = get_chunk_filename(s, 1, oc->url); + ret = get_chunk_filename(s, 1, oc_filename); if (ret < 0) return ret; + oc_url = av_strdup(oc_filename); + if (!oc_url) + return AVERROR(ENOMEM); + ff_format_set_url(oc, oc_url); if (wc->http_method) av_dict_set(&options, "method", wc->http_method, 0); ret = s->io_open(s, &oc->pb, oc->url, AVIO_FLAG_WRITE, &options); |