From: Tsuda kageyu Date: Sat, 20 Apr 2013 00:28:19 +0000 (+0900) Subject: Fix reading corrupted ID3v2 syncdata X-Git-Tag: v1.9~55^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8a7d1dd796dd909c826f8bf1aca0c1402b47f34a;p=taglib Fix reading corrupted ID3v2 syncdata --- diff --git a/taglib/mpeg/id3v2/id3v2synchdata.cpp b/taglib/mpeg/id3v2/id3v2synchdata.cpp index 60698d3c..4acfd914 100644 --- a/taglib/mpeg/id3v2/id3v2synchdata.cpp +++ b/taglib/mpeg/id3v2/id3v2synchdata.cpp @@ -49,7 +49,14 @@ TagLib::uint SynchData::toUInt(const ByteVector &data) // Invalid data; assume this was created by some buggy software that just // put normal integers here rather than syncsafe ones, and try it that // way. - sum = data.toUInt(); + if(data.size() >= 4) { + sum = data.toUInt(0, true); + } + else { + ByteVector tmp(data); + tmp.resize(4); + sum = tmp.toUInt(0, true); + } } return sum;