From ecd16ea498e27cd6fd11eaecc52425c1884cad74 Mon Sep 17 00:00:00 2001
From: Tanguy Rozier <trozier@freebox.fr>
Date: Tue, 2 Sep 2025 15:12:17 +0200
Subject: [PATCH 4/6] avformat/mov: fix mem leaks


diff --git a/libavformat/mov.c b/libavformat/mov.c
index b29c41a6b6..706ef5a01e 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -86,6 +86,7 @@ typedef struct MOVParseTableEntry {
 static int mov_read_default(MOVContext *c, AVIOContext *pb, MOVAtom atom);
 static int mov_read_mfra(MOVContext *c, AVIOContext *f);
 static void mov_free_stream_context(AVFormatContext *s, AVStream *st);
+static void mov_free_encryption_index(MOVEncryptionIndex **index);
 
 static int mov_metadata_track_or_disc_number(MOVContext *c, AVIOContext *pb,
                                              unsigned len, const char *key)
@@ -1812,6 +1813,24 @@ static void fix_frag_index_entries(MOVFragmentIndex *frag_index, int index,
     }
 }
 
+static void free_curr_frag_streams_encryption_indexes(MOVFragmentIndex *frag_index)
+{
+    MOVFragmentStreamInfo *fsi;
+    MOVFragmentIndexItem *fii;
+
+    if ((frag_index->current < 0) ||
+        (frag_index->current >= frag_index->nb_items))
+        return;
+
+    fii = &frag_index->item[frag_index->current];
+
+    for (fsi = &fii->stream_info[0];
+         fsi < &fii->stream_info[fii->nb_stream_info];
+         fsi++) {
+        mov_free_encryption_index(&fsi->encryption_index);
+    }
+}
+
 static int mov_read_moof(MOVContext *c, AVIOContext *pb, MOVAtom atom)
 {
     // Set by mov_read_tfhd(). mov_read_trun() will reject files missing tfhd.
@@ -1834,6 +1853,7 @@ static int mov_read_moof(MOVContext *c, AVIOContext *pb, MOVAtom atom)
     }
     c->fragment.moof_offset = c->fragment.implicit_offset = avio_tell(pb) - 8;
     av_log(c->fc, AV_LOG_TRACE, "moof offset %"PRIx64"\n", c->fragment.moof_offset);
+    free_curr_frag_streams_encryption_indexes(&c->frag_index);
     c->frag_index.current = update_frag_index(c, c->fragment.moof_offset);
     return mov_read_default(c, pb, atom);
 }
-- 
2.51.0

