From 8a7d1dd796dd909c826f8bf1aca0c1402b47f34a Mon Sep 17 00:00:00 2001 From: Tsuda kageyu Date: Sat, 20 Apr 2013 09:28:19 +0900 Subject: [PATCH] Fix reading corrupted ID3v2 syncdata --- taglib/mpeg/id3v2/id3v2synchdata.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) 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;