[FFmpeg-cvslog] avformat/options: log filename on open

Michael Niedermayer git at videolan.org
Sun Jun 18 17:32:30 EEST 2017


ffmpeg | branch: release/3.1 | Michael Niedermayer <michael at niedermayer.cc> | Fri Jun  2 14:47:16 2017 +0200| [6af15d2d896dc4a909a1d80d70d227f96730f3a2] | committer: Michael Niedermayer

avformat/options: log filename on open

The loglevel is choosen so that the main filename and any images of
multi image sequences are shown only at debug level to avoid
clutter.

This makes exploits in playlists more visible. As they would show
accesses to private/sensitive files

Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>
(cherry picked from commit 53e0d5d7247548743e13c59c35e59fc2161e9582)
Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=6af15d2d896dc4a909a1d80d70d227f96730f3a2
---

 libavformat/options.c | 12 ++++++++++++
 libavformat/utils.c   |  2 +-
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/libavformat/options.c b/libavformat/options.c
index 04d9c454d3..8fbc0d445e 100644
--- a/libavformat/options.c
+++ b/libavformat/options.c
@@ -102,6 +102,18 @@ static const AVClass av_format_context_class = {
 static int io_open_default(AVFormatContext *s, AVIOContext **pb,
                            const char *url, int flags, AVDictionary **options)
 {
+    int loglevel;
+
+    if (!strcmp(url, s->filename) ||
+        s->iformat && !strcmp(s->iformat->name, "image2") ||
+        s->oformat && !strcmp(s->oformat->name, "image2")
+    ) {
+        loglevel = AV_LOG_DEBUG;
+    } else
+        loglevel = AV_LOG_INFO;
+
+    av_log(s, loglevel, "Opening \'%s\' for %s\n", url, flags & AVIO_FLAG_WRITE ? "writing" : "reading");
+
 #if FF_API_OLD_OPEN_CALLBACKS
 FF_DISABLE_DEPRECATION_WARNINGS
     if (s->open_cb)
diff --git a/libavformat/utils.c b/libavformat/utils.c
index d71aca851b..46dc5109d1 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -497,6 +497,7 @@ int avformat_open_input(AVFormatContext **ps, const char *filename,
     if ((ret = av_opt_set_dict(s, &tmp)) < 0)
         goto fail;
 
+    av_strlcpy(s->filename, filename ? filename : "", sizeof(s->filename));
     if ((ret = init_input(s, filename, &tmp)) < 0)
         goto fail;
     s->probe_score = ret;
@@ -534,7 +535,6 @@ int avformat_open_input(AVFormatContext **ps, const char *filename,
     }
 
     s->duration = s->start_time = AV_NOPTS_VALUE;
-    av_strlcpy(s->filename, filename ? filename : "", sizeof(s->filename));
 
     /* Allocate private data. */
     if (s->iformat->priv_data_size > 0) {



More information about the ffmpeg-cvslog mailing list