aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2020-01-27 09:28:18 +0100
committerMichael Niedermayer <michael@niedermayer.cc>2020-01-28 17:18:27 +0100
commit3999c4b374c2f3786137bd7e820dd1555fc20d90 (patch)
tree3c2b9429ef88b814124ffd6a932ee4ebe24eb8b4
parentab39f0d841cfcc95dc99ef788e22554fe46eb1c8 (diff)
downloadffmpeg-3999c4b374c2f3786137bd7e820dd1555fc20d90.tar.gz
avformat/mov: Free encryption data on error
Fixes memleak and Coverity issue #1439587. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
-rw-r--r--libavformat/mov.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/libavformat/mov.c b/libavformat/mov.c
index 064fa88137..b9e32874c4 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -6329,8 +6329,10 @@ static int mov_read_pssh(MOVContext *c, AVIOContext *pb, MOVAtom atom)
if (version > 0) {
kid_count = avio_rb32(pb);
- if (kid_count >= INT_MAX / sizeof(*key_ids))
- return AVERROR(ENOMEM);
+ if (kid_count >= INT_MAX / sizeof(*key_ids)) {
+ ret = AVERROR(ENOMEM);
+ goto finish;
+ }
for (unsigned int i = 0; i < kid_count && !pb->eof_reached; i++) {
unsigned int min_kid_count = FFMIN(FFMAX(i + 1, 1024), kid_count);