From 8913c8661c6bd61688cc0b01796120be9309bf3f Mon Sep 17 00:00:00 2001 From: jeanlf Date: Tue, 18 Jan 2022 22:21:32 +0100 Subject: [PATCH] fixed bug and mem leak in csgp parsing and signal sample groups from traf in dump --- src/isomedia/box_code_base.c | 1 + src/isomedia/box_dump.c | 11 ++++++++--- src/isomedia/isom_intern.c | 1 + 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/isomedia/box_code_base.c b/src/isomedia/box_code_base.c index eb6e7571b8..8154002a8f 100644 --- a/src/isomedia/box_code_base.c +++ b/src/isomedia/box_code_base.c @@ -12570,6 +12570,7 @@ GF_Err csgp_box_read(GF_Box *s, GF_BitStream *bs) //MSB set, this is a index of a group described in the fragment if (idx & gidx_mask) { idx += 0x10000; + idx &= ~gidx_mask; } } ptr->patterns[i].sample_group_description_indices[j] = idx; diff --git a/src/isomedia/box_dump.c b/src/isomedia/box_dump.c index 4aedddb877..22292fc188 100644 --- a/src/isomedia/box_dump.c +++ b/src/isomedia/box_dump.c @@ -4604,15 +4604,20 @@ GF_Err sbgp_box_dump(GF_Box *a, FILE * trace) if (isalnum(ptr->grouping_type_parameter&0xFF)) { gf_fprintf(trace, " grouping_type_parameter=\"%s\"", gf_4cc_to_str(ptr->grouping_type_parameter) ); } else { - gf_fprintf(trace, " grouping_type_parameter=\"%d\"", ptr->grouping_type_parameter); + gf_fprintf(trace, " grouping_type_parameter=\"%u\"", ptr->grouping_type_parameter); } } gf_fprintf(trace, ">\n"); for (i=0; ientry_count; i++) { - gf_fprintf(trace, "\n", ptr->sample_entries[i].sample_count, ptr->sample_entries[i].group_description_index ); + GF_SampleGroupEntry *pe = &ptr->sample_entries[i]; + if (pe->group_description_index>0x10000) { + gf_fprintf(trace, "\n", pe->sample_count, pe->group_description_index-0x10000); + } else { + gf_fprintf(trace, "\n", ptr->sample_entries[i].sample_count, ptr->sample_entries[i].group_description_index ); + } } if (!ptr->size) { - gf_fprintf(trace, "\n"); + gf_fprintf(trace, "\n"); } gf_isom_box_dump_done("SampleGroupBox", a, trace); return GF_OK; diff --git a/src/isomedia/isom_intern.c b/src/isomedia/isom_intern.c index 10407b460b..61110ff960 100644 --- a/src/isomedia/isom_intern.c +++ b/src/isomedia/isom_intern.c @@ -284,6 +284,7 @@ static void convert_compact_sample_groups(GF_List *child_boxes, GF_List *sampleG k = 0; } } + gf_isom_box_del((GF_Box*)csgp); } }