From a18866a48b210062d360d1457101dbffd03b66ac Mon Sep 17 00:00:00 2001 From: Scott Wheeler <wheeler@kde.org> Date: Thu, 28 Oct 2004 22:11:41 +0000 Subject: [PATCH] Make sure that there's (a) data in a bytevector that we're trying to convert to an integer before trying to convert it and (b) make sure that there's data in an APE::Item before trying to parse it. BUG:92028 git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@358637 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- ape/apeitem.cpp | 7 ++++++- toolkit/tbytevector.cpp | 6 ++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/ape/apeitem.cpp b/ape/apeitem.cpp index d4cca52d..6f5fc907 100644 --- a/ape/apeitem.cpp +++ b/ape/apeitem.cpp @@ -123,8 +123,13 @@ bool APE::Item::isEmpty() const } } -void APE::Item::parse(const ByteVector& data) +void APE::Item::parse(const ByteVector &data) { + if(data.size() < 10) { + debug("APE::Item::parse() -- no data in item"); + return; + } + uint valueLength = data.mid(0, 4).toUInt(false); uint flags = data.mid(4, 4).toUInt(false); diff --git a/toolkit/tbytevector.cpp b/toolkit/tbytevector.cpp index 78c1ac23..8bd90615 100644 --- a/toolkit/tbytevector.cpp +++ b/toolkit/tbytevector.cpp @@ -189,6 +189,12 @@ namespace TagLib { T toNumber(const std::vector<char> &data, bool mostSignificantByteFirst) { T sum = 0; + + if(data.size() <= 0) { + debug("ByteVectorMirror::toNumber<T>() -- data is empty, returning 0"); + return sum; + } + uint size = sizeof(T); uint last = data.size() > size ? size - 1 : data.size() - 1; -- 2.40.0