diff mbox

[FFmpeg-devel] avformat/webm_chunk: always use a static buffer for get_chunk_filename

Message ID 20180513202619.14047-1-cus@passwd.hu
State Accepted
Commit 2dbe936bf7f9e0fe7e8f05e5c3b78fb1afbff164
Headers show

Commit Message

Marton Balint May 13, 2018, 8:26 p.m. UTC
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>
---
 libavformat/webm_chunk.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

Comments

Marton Balint May 15, 2018, 9:18 p.m. UTC | #1
On Sun, 13 May 2018, Marton Balint wrote:

> 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.

Pushed and backported.

Regards,
Marton
diff mbox

Patch

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);