summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Bluemel <tbluemel@control4.com>2016-08-24 10:33:14 -0600
committerTim-Philipp Müller <tim@centricular.com>2016-12-25 10:35:47 +0000
commitda6070054f471216adac2c5879031fcebfa592d2 (patch)
treed9d25f978595816005e4be7956e433374b27b2e5
parentcd4253028e94e600fb7d5199229dccd1250c9e71 (diff)
id3v2: fix handling of tags with extended headers
The extended header size value does not include itself. https://bugzilla.gnome.org/show_bug.cgi?id=770355
-rw-r--r--gst-libs/gst/tag/id3v2.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/gst-libs/gst/tag/id3v2.c b/gst-libs/gst/tag/id3v2.c
index e62edb3bf..5b76f7563 100644
--- a/gst-libs/gst/tag/id3v2.c
+++ b/gst-libs/gst/tag/id3v2.c
@@ -448,7 +448,7 @@ id3v2_frames_to_tag_list (ID3TagsWorking * work, guint size)
if (work->hdr.flags & ID3V2_HDR_FLAG_EXTHDR) {
work->hdr.ext_hdr_size = id3v2_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) {
+ (work->hdr.ext_hdr_size + 4) > work->hdr.frame_data_size) {
GST_DEBUG ("Invalid extended header. Broken tag");
return FALSE;
}
@@ -460,8 +460,8 @@ id3v2_frames_to_tag_list (ID3TagsWorking * work, guint size)
}
work->hdr.ext_flag_data = work->hdr.frame_data + 5;
- work->hdr.frame_data += work->hdr.ext_hdr_size;
- work->hdr.frame_data_size -= work->hdr.ext_hdr_size;
+ work->hdr.frame_data += work->hdr.ext_hdr_size + 4;
+ work->hdr.frame_data_size -= work->hdr.ext_hdr_size + 4;
}
frame_hdr_size = id3v2_frame_hdr_size (work->hdr.version);