mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-03 16:09:39 +00:00
tag: id3v2: Handle 0 data size in otherwise valid frames.
Original commit message from CVS: * gst-libs/gst/tag/id3v2.c: (id3demux_id3v2_frames_to_tag_list): * gst-libs/gst/tag/id3v2frames.c: (id3v2_genre_fields_to_taglist): Handle 0 data size in otherwise valid frames. Handle numeric strings in 2.4.0 even when not in parentheses
This commit is contained in:
parent
e4af0fe41f
commit
dbcf8fc320
2 changed files with 7 additions and 3 deletions
|
@ -333,6 +333,7 @@ id3demux_id3v2_frames_to_tag_list (ID3TagsWorking * work, guint size)
|
||||||
work->hdr.ext_hdr_size = read_synch_uint (work->hdr.frame_data, 4);
|
work->hdr.ext_hdr_size = read_synch_uint (work->hdr.frame_data, 4);
|
||||||
if (work->hdr.ext_hdr_size < 6 ||
|
if (work->hdr.ext_hdr_size < 6 ||
|
||||||
(work->hdr.ext_hdr_size) > work->hdr.frame_data_size) {
|
(work->hdr.ext_hdr_size) > work->hdr.frame_data_size) {
|
||||||
|
GST_DEBUG ("Invalid extended header. Broken tag");
|
||||||
return ID3TAGS_BROKEN_TAG;
|
return ID3TAGS_BROKEN_TAG;
|
||||||
}
|
}
|
||||||
work->hdr.ext_flag_bytes = work->hdr.frame_data[4];
|
work->hdr.ext_flag_bytes = work->hdr.frame_data[4];
|
||||||
|
@ -400,6 +401,8 @@ id3demux_id3v2_frames_to_tag_list (ID3TagsWorking * work, guint size)
|
||||||
if (ID3V2_VER_MAJOR (work->hdr.version) == 3) {
|
if (ID3V2_VER_MAJOR (work->hdr.version) == 3) {
|
||||||
frame_flags &= ID3V2_3_FRAME_FLAGS_MASK;
|
frame_flags &= ID3V2_3_FRAME_FLAGS_MASK;
|
||||||
obsolete_id = convert_fid_to_v240 (frame_id);
|
obsolete_id = convert_fid_to_v240 (frame_id);
|
||||||
|
if (obsolete_id)
|
||||||
|
GST_DEBUG ("Ignoring v2.3 frame %s", frame_id);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -407,8 +410,7 @@ id3demux_id3v2_frames_to_tag_list (ID3TagsWorking * work, guint size)
|
||||||
work->hdr.frame_data += frame_hdr_size;
|
work->hdr.frame_data += frame_hdr_size;
|
||||||
work->hdr.frame_data_size -= frame_hdr_size;
|
work->hdr.frame_data_size -= frame_hdr_size;
|
||||||
|
|
||||||
if (frame_size > work->hdr.frame_data_size ||
|
if (frame_size > work->hdr.frame_data_size || strcmp (frame_id, "") == 0)
|
||||||
frame_size == 0 || strcmp (frame_id, "") == 0)
|
|
||||||
break; /* No more frames to read */
|
break; /* No more frames to read */
|
||||||
|
|
||||||
#if 1
|
#if 1
|
||||||
|
|
|
@ -420,7 +420,9 @@ id3v2_genre_fields_to_taglist (ID3TagsWorking * work, const gchar * tag_name,
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
len = strlen (tag_str);
|
len = strlen (tag_str);
|
||||||
if (work->hdr.version <= 0x300) { /* <= 2.3.0 */
|
/* Only supposed to see '(n)' type numeric genre strings in ID3 <= 2.3.0
|
||||||
|
* but apparently we see them in 2.4.0 sometimes too */
|
||||||
|
if (TRUE || work->hdr.version <= 0x300) { /* <= 2.3.0 */
|
||||||
/* Check for genre numbers wrapped in parentheses, possibly
|
/* Check for genre numbers wrapped in parentheses, possibly
|
||||||
* followed by a string */
|
* followed by a string */
|
||||||
while (len >= 2) {
|
while (len >= 2) {
|
||||||
|
|
Loading…
Reference in a new issue