mirror of
https://github.com/taglib/taglib.git
synced 2025-06-04 01:28:21 -04:00
Add a few checks to make sure that we don't blow up when trying to read zero-byte
values. BUG:150250 git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@717984 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
This commit is contained in:
parent
2eda04f934
commit
14eda582ee
@ -216,7 +216,7 @@ void APE::Tag::read()
|
||||
d->file->seek(d->tagOffset);
|
||||
d->footer.setData(d->file->readBlock(Footer::size()));
|
||||
|
||||
if(d->footer.tagSize() == 0 ||
|
||||
if(d->footer.tagSize() <= Footer::size() ||
|
||||
d->footer.tagSize() > uint(d->file->length()))
|
||||
return;
|
||||
|
||||
|
@ -321,7 +321,9 @@ ByteVector &ByteVector::setData(const char *data, uint length)
|
||||
detach();
|
||||
|
||||
resize(length);
|
||||
::memcpy(DATA(d), data, length);
|
||||
|
||||
if(length > 0)
|
||||
::memcpy(DATA(d), data, length);
|
||||
|
||||
return *this;
|
||||
}
|
||||
@ -334,12 +336,12 @@ ByteVector &ByteVector::setData(const char *data)
|
||||
char *ByteVector::data()
|
||||
{
|
||||
detach();
|
||||
return DATA(d);
|
||||
return size() > 0 ? DATA(d) : 0;
|
||||
}
|
||||
|
||||
const char *ByteVector::data() const
|
||||
{
|
||||
return DATA(d);
|
||||
return size() > 0 ? DATA(d) : 0;
|
||||
}
|
||||
|
||||
ByteVector ByteVector::mid(uint index, uint length) const
|
||||
|
@ -108,6 +108,9 @@ ByteVector File::readBlock(ulong length)
|
||||
return ByteVector::null;
|
||||
}
|
||||
|
||||
if(length == 0)
|
||||
return ByteVector::null;
|
||||
|
||||
if(length > FilePrivate::bufferSize &&
|
||||
length > ulong(File::length()))
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user