summaryrefslogtreecommitdiffstats
path: root/gst/id3demux
diff options
context:
space:
mode:
authorJan Schmidt <thaytan@mad.scientist.com>2006-02-18 20:48:09 +0000
committerJan Schmidt <thaytan@mad.scientist.com>2006-02-18 20:48:09 +0000
commitc64021f87d770e1e1ad8e62dd3be308bf05e7c53 (patch)
tree6d23ee6cdc864c8f0814d52a50fd903418b4a91a /gst/id3demux
parentd9f6178249e4fc1529c1c9662c6a526dd5cb2ae7 (diff)
gst/id3demux/: Handle 0 data size in otherwise valid frames.
Original commit message from CVS: * gst/id3demux/id3tags.c: (id3demux_id3v2_frames_to_tag_list): * gst/id3demux/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
Diffstat (limited to 'gst/id3demux')
-rw-r--r--gst/id3demux/id3tags.c6
-rw-r--r--gst/id3demux/id3v2frames.c4
2 files changed, 7 insertions, 3 deletions
diff --git a/gst/id3demux/id3tags.c b/gst/id3demux/id3tags.c
index 2ce23e0d..157d601d 100644
--- a/gst/id3demux/id3tags.c
+++ b/gst/id3demux/id3tags.c
@@ -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);
if (work->hdr.ext_hdr_size < 6 ||
(work->hdr.ext_hdr_size) > work->hdr.frame_data_size) {
+ GST_DEBUG ("Invalid extended header. Broken tag");
return ID3TAGS_BROKEN_TAG;
}
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) {
frame_flags &= ID3V2_3_FRAME_FLAGS_MASK;
obsolete_id = convert_fid_to_v240 (frame_id);
+ if (obsolete_id)
+ GST_DEBUG ("Ignoring v2.3 frame %s", frame_id);
}
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_size -= frame_hdr_size;
- if (frame_size > work->hdr.frame_data_size ||
- frame_size == 0 || strcmp (frame_id, "") == 0)
+ if (frame_size > work->hdr.frame_data_size || strcmp (frame_id, "") == 0)
break; /* No more frames to read */
#if 1
diff --git a/gst/id3demux/id3v2frames.c b/gst/id3demux/id3v2frames.c
index cf356433..bab609de 100644
--- a/gst/id3demux/id3v2frames.c
+++ b/gst/id3demux/id3v2frames.c
@@ -420,7 +420,9 @@ id3v2_genre_fields_to_taglist (ID3TagsWorking * work, const gchar * tag_name,
continue;
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
* followed by a string */
while (len >= 2) {