Skip to content

Commit c586d3e

Browse files
committed
set userDataSize, schemeURI or value null cases, kind box as data
1 parent 93e301c commit c586d3e

File tree

2 files changed

+13
-6
lines changed

2 files changed

+13
-6
lines changed

src/filters/isoffin_load.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -709,7 +709,7 @@ static ISOMChannel *isor_setup_channel(ISOMReader *read, u32 track, u32 streamty
709709
else
710710
snprintf(szName, 30, "udta_%s", gf_4cc_to_str(type));
711711
szName[30]=0;
712-
if (gf_utf8_is_legal(udta, udta_size)) {
712+
if (gf_utf8_is_legal(udta, udta_size) && type != GF_ISOM_BOX_TYPE_KIND) {
713713
if (!udta[udta_size-1]) {
714714
gf_filter_pid_set_property_dyn(ch->pid, szName, &PROP_STRING_NO_COPY(udta));
715715
} else {

src/isomedia/isom_read.c

+12-5
Original file line numberDiff line numberDiff line change
@@ -2823,12 +2823,19 @@ GF_Err gf_isom_get_user_data(GF_ISOFile *movie, u32 trackNumber, u32 UserDataTyp
28232823
return GF_OK;
28242824
} else if (ptr->type == GF_ISOM_BOX_TYPE_KIND) {
28252825
GF_KindBox *kind = (GF_KindBox *)ptr;
2826-
u32 lenSchemeURI = (u32) strlen(kind->schemeURI) + 1;
2827-
u32 lenValue = (u32) strlen(kind->value) + 1;
2828-
*userData = (char *)gf_malloc(sizeof(char) * (lenSchemeURI+lenValue));
2826+
u32 len, lenSchemeURI;
2827+
len = lenSchemeURI = (kind->schemeURI ? strlen(kind->schemeURI) : 0) + 1;
2828+
len += (kind->value ? strlen(kind->value) + 1 : 0);
2829+
len += sizeof(kind->flags);
2830+
*userData = (char *)gf_malloc(sizeof(char) * len);
28292831
if (!*userData) return GF_OUT_OF_MEM;
2830-
memcpy(*userData, kind->schemeURI, sizeof(char)*lenSchemeURI);
2831-
memcpy(*userData + lenSchemeURI, kind->value, sizeof(char)*lenValue);
2832+
memcpy(*userData, &(kind->flags), sizeof(kind->flags));
2833+
if (kind->schemeURI)
2834+
strcpy(*userData + sizeof(kind->flags), kind->schemeURI);
2835+
else
2836+
*(*userData + sizeof(kind->flags)) = 0;
2837+
if (kind->value) strcpy(*userData + sizeof(kind->flags) + lenSchemeURI, kind->value);
2838+
*userDataSize = len;
28322839
return GF_OK;
28332840
} else {
28342841
char *str = NULL;

0 commit comments

Comments
 (0)