Fix a segfault when parsing WAV properties.

This commit is contained in:
Tsuda Kageyu 2014-12-31 01:46:30 +09:00
parent 695fb5ec16
commit 0d2e01df61
3 changed files with 10 additions and 2 deletions

View File

@ -115,6 +115,11 @@ TagLib::uint RIFF::WAV::Properties::sampleFrames() const
void RIFF::WAV::Properties::read(const ByteVector &data)
{
if(data.size() < 16) {
debug("RIFF::WAV::Properties::read() - \"fmt \" chunk is too short for WAV.");
return;
}
d->format = data.toShort(0, false);
d->channels = data.toShort(2, false);
d->sampleRate = data.toUInt(4, false);

BIN
tests/data/segfault.wav Normal file

Binary file not shown.

View File

@ -72,8 +72,11 @@ public:
void testFuzzedFiles()
{
RIFF::WAV::File f(TEST_FILE_PATH_C("infloop.wav"));
CPPUNIT_ASSERT(!f.isValid());
RIFF::WAV::File f1(TEST_FILE_PATH_C("infloop.wav"));
CPPUNIT_ASSERT(!f1.isValid());
RIFF::WAV::File f2(TEST_FILE_PATH_C("segfault.wav"));
CPPUNIT_ASSERT(f2.isValid());
}
};