S3M import: safety checks

This commit is contained in:
tildearrow 2024-06-25 04:18:19 -05:00
parent 40e14d88cc
commit 2aa38d3e6c

View file

@ -128,6 +128,13 @@ bool DivEngine::loadS3M(unsigned char* file, size_t len) {
unsigned short ordersLen=reader.readS();
ds.insLen=reader.readS();
if (ordersLen>256) {
logE("invalid order count!");
lastError="invalid order count!";
delete[] file;
return false;
}
logV("orders: %d",ordersLen);
logV("instruments: %d",ds.insLen);
@ -142,6 +149,13 @@ bool DivEngine::loadS3M(unsigned char* file, size_t len) {
logV("patterns: %d",patCount);
if (patCount>256) {
logE("invalid pattern count!");
lastError="invalid pattern count!";
delete[] file;
return false;
}
unsigned short flags=reader.readS();
unsigned short version=reader.readS();
bool signedSamples=(reader.readS()==1);