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

Dave Johansen davejohansen at gmail.com
Fri Nov 3 06:44:49 EET 2023


---
 libavformat/hlsenc.c | 26 +++++++++++++++++++++++++-
 1 file changed, 25 insertions(+), 1 deletion(-)

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)
-- 
2.39.2 (Apple Git-143)



More information about the ffmpeg-devel mailing list