[vlc-commits] [Git][videolan/vlc][master] xiph_metadata: ensure the tracks metadata are valid numbers
Steve Lhomme (@robUx4)
gitlab at videolan.org
Sun Aug 24 14:53:36 UTC 2025
Steve Lhomme pushed to branch master at VideoLAN / VLC
Commits:
63c36ef5 by Steve Lhomme at 2025-08-24T14:28:13+00:00
xiph_metadata: ensure the tracks metadata are valid numbers
They are already parsed as unsigned values in the TRACKNUMBER field.
The UTF-8 check was removed from these fields in dfdc98f72edafc586f5a531f9071461d0d68a314.
If we turn them into a valid integer (when they are) we have safe UTF-8 data.
Ref. #28976
- - - - -
1 changed file:
- modules/demux/xiph_metadata.c
Changes:
=====================================
modules/demux/xiph_metadata.c
=====================================
@@ -397,11 +397,19 @@ void vorbis_ParseComment( es_format_t *p_fmt, vlc_meta_t **pp_meta,
hasMetaFlags |= XIPHMETA_##var; \
}
-#define IF_EXTRACT_ONCE(txt,var) \
+#define IF_EXTRACT_ONCE_NUMBER(txt,var) \
if( !strncasecmp(psz_comment, txt, strlen(txt)) && !(hasMetaFlags & XIPHMETA_##var) ) \
{ \
- vlc_meta_Set( p_meta, vlc_meta_ ## var, &psz_comment[strlen(txt)] ); \
- hasMetaFlags |= XIPHMETA_##var; \
+ bool isnum = true; \
+ const char *num_str = &psz_comment[strlen(txt)], *c; \
+ for (c = num_str; isnum && *c != '\0'; c++) { \
+ isnum = *c >= '0' && *c <= '9'; \
+ } \
+ if (isnum) \
+ { \
+ vlc_meta_Set( p_meta, vlc_meta_ ## var, num_str ); \
+ hasMetaFlags |= XIPHMETA_##var; \
+ } \
}
IF_EXTRACT("TITLE=", Title )
@@ -429,8 +437,8 @@ void vorbis_ParseComment( es_format_t *p_fmt, vlc_meta_t **pp_meta,
}
}
}
- else IF_EXTRACT_ONCE("TRACKTOTAL=", TrackTotal )
- else IF_EXTRACT_ONCE("TOTALTRACKS=", TrackTotal )
+ else IF_EXTRACT_ONCE_NUMBER("TRACKTOTAL=", TrackTotal )
+ else IF_EXTRACT_ONCE_NUMBER("TOTALTRACKS=", TrackTotal )
else IF_EXTRACT("DESCRIPTION=", Description )
else IF_EXTRACT("COMMENT=", Description )
else IF_EXTRACT("COMMENTS=", Description )
@@ -539,4 +547,3 @@ const char *FindKateCategoryName( const char *psz_tag )
}
return N_("Unknown category");
}
-
View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/63c36ef5af18366f38c7229d653a9e29eead7f06
--
View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/63c36ef5af18366f38c7229d653a9e29eead7f06
You're receiving this email because of your account on code.videolan.org.
VideoLAN code repository instance
More information about the vlc-commits
mailing list