aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2020-06-14 09:19:38 +0200
committerAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2020-07-03 14:13:48 +0200
commit9b84d1d505fbdf0c5d8cfc284c9535c65076b078 (patch)
tree6808f123bee53c4372334812757071adb6e6778b
parent7c50575dcf4ac5c4c030569fe396afb4c1aba587 (diff)
downloadffmpeg-9b84d1d505fbdf0c5d8cfc284c9535c65076b078.tar.gz
avformat/mov: Fix memleak upon encountering repeating tags
mov_read_custom tries to read three strings belonging to three different tags. When an already encountered tag is encountered again, a new buffer for the string to be read is allocated and stored in the pointer destined for this particular tag. But in this scenario, said pointer already holds the address of the string read earlier, leading to a leak. This commit therefore aborts the reading process upon encountering an already encountered tag. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com> (cherry picked from commit dfef1d5e3cd4dfead84416a01e6c9ff0da50b34d) Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
-rw-r--r--libavformat/mov.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/libavformat/mov.c b/libavformat/mov.c
index 0c354ab387..ab81ad64ae 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -3954,6 +3954,9 @@ static int mov_read_custom(MOVContext *c, AVIOContext *pb, MOVAtom atom)
} else
break;
+ if (*p)
+ break;
+
*p = av_malloc(len + 1);
if (!*p)
break;