aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2015-03-14 21:24:54 +0100
committerMichael Niedermayer <michaelni@gmx.at>2015-03-21 01:52:53 +0100
commitb0cd6fb590810174296e65b362cc1d62a5b63051 (patch)
tree83503005c4d666abcafe3c8d8622c248c026cd3e
parent50fd06ea32e0e2fa994484ebeb6d81773130e120 (diff)
downloadffmpeg-b0cd6fb590810174296e65b362cc1d62a5b63051.tar.gz
avformat/mov: Check for string truncation in mov_open_dref()
Signed-off-by: Michael Niedermayer <michaelni@gmx.at> (cherry picked from commit 8003816e1619e77d8de051883264aa090e0d78cc) Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--libavformat/mov.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/libavformat/mov.c b/libavformat/mov.c
index 39f30e432c..01600799ca 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -2460,7 +2460,7 @@ static int mov_open_dref(AVIOContext **pb, const char *src, MOVDref *ref,
/* try relative path, we do not try the absolute because it can leak information about our
system to an attacker */
if (ref->nlvl_to > 0 && ref->nlvl_from > 0) {
- char filename[1024];
+ char filename[1025];
const char *src_path;
int i, l;
@@ -2490,6 +2490,8 @@ static int mov_open_dref(AVIOContext **pb, const char *src, MOVDref *ref,
av_strlcat(filename, ref->path + l + 1, sizeof(filename));
+ if (strlen(filename) + 1 == sizeof(filename))
+ return AVERROR(ENOENT);
if (!avio_open2(pb, filename, AVIO_FLAG_READ, int_cb, NULL))
return 0;
}