diff --git a/Plugins/BASSMODS/BASSMODS/BASSDecoder.mm b/Plugins/BASSMODS/BASSMODS/BASSDecoder.mm index 3398a249d..dd765ccfc 100755 --- a/Plugins/BASSMODS/BASSMODS/BASSDecoder.mm +++ b/Plugins/BASSMODS/BASSMODS/BASSDecoder.mm @@ -76,6 +76,8 @@ static void SyncProc( HSYNC handle, DWORD channel, DWORD data, void *user ) - (BOOL)open:(id)s { + [self setSource:s]; + [source seek:0 whence:SEEK_END]; long size = [source tell]; [source seek:0 whence:SEEK_SET]; @@ -89,14 +91,12 @@ static void SyncProc( HSYNC handle, DWORD channel, DWORD data, void *user ) data = try_data; } - if (memcmp(data, "IMPM", 4) != 0) { + if (size < 4 || (memcmp(data, "mo3", 3) != 0 && memcmp(data, "IMPM", 4) != 0)) { ALog(@"BASS was passed a non-IT module"); free(data); return NO; } - [self setSource:s]; - NSURL * url = [s url]; int track_num; if ([[url fragment] length] == 0)