diff options
author | Thomas Bluemel <tbluemel@control4.com> | 2016-08-24 10:33:14 -0600 |
---|---|---|
committer | Tim-Philipp Müller <tim@centricular.com> | 2016-12-25 10:35:47 +0000 |
commit | da6070054f471216adac2c5879031fcebfa592d2 (patch) | |
tree | d9d25f978595816005e4be7956e433374b27b2e5 | |
parent | cd4253028e94e600fb7d5199229dccd1250c9e71 (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.c | 6 |
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); |