diff mbox series

[FFmpeg-devel] avformat/hlsenc: Only append postfix to fmp4 init filename if not in the subdir

Message ID 20231103044449.83331-1-davejohansen@gmail.com
State New
Headers show
Series [FFmpeg-devel] avformat/hlsenc: Only append postfix to fmp4 init filename if not in the subdir | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished

Commit Message

David Johansen Nov. 3, 2023, 4:44 a.m. UTC
---
 libavformat/hlsenc.c | 26 +++++++++++++++++++++++++-
 1 file changed, 25 insertions(+), 1 deletion(-)
diff mbox series

Patch

diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c
index 4ef84c05c1..dd1a461cce 100644
--- a/libavformat/hlsenc.c
+++ b/libavformat/hlsenc.c
@@ -1931,6 +1931,30 @@  fail:
     return ret;
 }
 
+static int validate_subdir(const char *fn)
+{
+    const char *subdir_name;
+    char *fn_dup = NULL;
+    int ret = 0;
+
+    if (!fn)
+        return AVERROR(EINVAL);
+
+    fn_dup = av_strdup(fn);
+    if (!fn_dup)
+        return AVERROR(ENOMEM);
+    subdir_name = av_dirname(fn_dup);
+
+    if (!av_stristr(subdir_name, "%v")) {
+        ret = AVERROR(EINVAL);
+        goto fail;
+    }
+
+fail:
+    av_freep(&fn_dup);
+    return ret;
+}
+
 static int format_name(const char *buf, char **s, int index, const char *varname)
 {
     const char *proto, *dir;
@@ -3019,7 +3043,7 @@  static int hls_init(AVFormatContext *s)
                         av_freep(&vs->fmp4_init_filename);
                         ret = format_name(hls->fmp4_init_filename,
                                           &vs->fmp4_init_filename, i, vs->varname);
-                    } else {
+                    } else if (validate_subdir(s->url) < 0) {
                         ret = append_postfix(vs->fmp4_init_filename, fmp4_init_filename_len, i);
                     }
                     if (ret < 0)