Fix an out-of-bounds access and consequent errors while parsing fuzzed MPC files.

Consequent errors may vary: segfault, zerodiv and so forth.
This commit is contained in:
Tsuda Kageyu
2015-01-08 12:05:17 +09:00
parent ef786188ad
commit 2193d6dd84
3 changed files with 19 additions and 10 deletions

BIN
tests/data/zerodiv.mpc Normal file

Binary file not shown.

View File

@ -1,10 +1,10 @@
#include <cppunit/extensions/HelperMacros.h>
#include <string>
#include <stdio.h>
#include <tag.h>
#include <tstringlist.h>
#include <tbytevectorlist.h>
#include <mpcfile.h>
#include <cppunit/extensions/HelperMacros.h>
#include "utils.h"
using namespace std;
@ -17,6 +17,7 @@ class TestMPC : public CppUnit::TestFixture
CPPUNIT_TEST(testPropertiesSV7);
CPPUNIT_TEST(testPropertiesSV5);
CPPUNIT_TEST(testPropertiesSV4);
CPPUNIT_TEST(testFuzzedFile1);
CPPUNIT_TEST_SUITE_END();
public:
@ -61,6 +62,12 @@ public:
CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate());
}
void testFuzzedFile1()
{
MPC::File f(TEST_FILE_PATH_C("zerodiv.mpc"));
CPPUNIT_ASSERT(f.isValid());
}
};
CPPUNIT_TEST_SUITE_REGISTRATION(TestMPC);