From abcdd3aed7c9c1759fcd54b287b1f7a48067822f Mon Sep 17 00:00:00 2001 From: James Almer Date: Mon, 25 Mar 2024 00:06:08 -0300 Subject: [PATCH] avformat/mov: don't use cur_item_id as array index Reviewed-by: Michael Niedermayer Signed-off-by: James Almer --- libavformat/mov.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/libavformat/mov.c b/libavformat/mov.c index f954b924a0..9f2ea97a5b 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -8085,7 +8085,6 @@ static int mov_read_iloc(MOVContext *c, AVIOContext *pb, MOVAtom atom) memset(c->heif_item + c->nb_heif_item, 0, sizeof(*c->heif_item) * (item_count - c->nb_heif_item)); c->nb_heif_item = FFMAX(c->nb_heif_item, item_count); - c->cur_item_id = 0; av_log(c->fc, AV_LOG_TRACE, "iloc: item_count %d\n", item_count); for (int i = 0; i < item_count; i++) { @@ -8127,7 +8126,7 @@ static int mov_read_iloc(MOVContext *c, AVIOContext *pb, MOVAtom atom) return atom.size; } -static int mov_read_infe(MOVContext *c, AVIOContext *pb, MOVAtom atom) +static int mov_read_infe(MOVContext *c, AVIOContext *pb, MOVAtom atom, int idx) { AVBPrint item_name; int64_t size = atom.size; @@ -8164,21 +8163,19 @@ static int mov_read_infe(MOVContext *c, AVIOContext *pb, MOVAtom atom) avio_skip(pb, size); if (ret) - av_bprint_finalize(&item_name, &c->heif_item[c->cur_item_id].name); - c->heif_item[c->cur_item_id].item_id = item_id; - c->heif_item[c->cur_item_id].type = item_type; + av_bprint_finalize(&item_name, &c->heif_item[idx].name); + c->heif_item[idx].item_id = item_id; + c->heif_item[idx].type = item_type; switch (item_type) { case MKTAG('a','v','0','1'): case MKTAG('h','v','c','1'): - ret = heif_add_stream(c, &c->heif_item[c->cur_item_id]); + ret = heif_add_stream(c, &c->heif_item[idx]); if (ret < 0) return ret; break; } - c->cur_item_id++; - return 0; } @@ -8210,14 +8207,13 @@ static int mov_read_iinf(MOVContext *c, AVIOContext *pb, MOVAtom atom) memset(c->heif_item + c->nb_heif_item, 0, sizeof(*c->heif_item) * (entry_count - c->nb_heif_item)); c->nb_heif_item = FFMAX(c->nb_heif_item, entry_count); - c->cur_item_id = 0; for (int i = 0; i < entry_count; i++) { MOVAtom infe; infe.size = avio_rb32(pb) - 8; infe.type = avio_rl32(pb); - ret = mov_read_infe(c, pb, infe); + ret = mov_read_infe(c, pb, infe, i); if (ret < 0) return ret; }