Study Box: Stricter rules for loading wav files
This commit is contained in:
parent
67c8cb4433
commit
a8d41596c0
1 changed files with 12 additions and 0 deletions
|
@ -11,6 +11,12 @@ shared_ptr<WavReader> WavReader::Create(uint8_t* wavData, uint32_t length)
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
uint32_t riffSize = wavData[4] | (wavData[5] << 8) | (wavData[6] << 16) | (wavData[7] << 24);
|
||||
if(riffSize + 8 != length) {
|
||||
//Invalid RIFF header (length does not match file size)
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
uint32_t channelCount = wavData[22] | (wavData[23] << 8);
|
||||
if(channelCount != 1) {
|
||||
//Only mono files are supported at the moment
|
||||
|
@ -23,6 +29,12 @@ shared_ptr<WavReader> WavReader::Create(uint8_t* wavData, uint32_t length)
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
uint32_t dataSize = wavData[24 + fmtSize] | (wavData[25 + fmtSize] << 8) | (wavData[26 + fmtSize] << 16) | (wavData[27 + fmtSize] << 24);
|
||||
if(dataSize + 28 + fmtSize > length) {
|
||||
//data chunk is too big
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
uint32_t bitsPerSample = wavData[34] | (wavData[35] << 8);
|
||||
if(bitsPerSample != 16) {
|
||||
//Only support 16-bit samples for now
|
||||
|
|
Loading…
Add table
Reference in a new issue