Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package mt32emu for openSUSE:Factory checked in at 2021-08-18 08:56:10 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/mt32emu (Old) and /work/SRC/openSUSE:Factory/.mt32emu.new.1899 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mt32emu" Wed Aug 18 08:56:10 2021 rev:7 rq:912583 version:2.5.3 Changes: -------- --- /work/SRC/openSUSE:Factory/mt32emu/mt32emu.changes 2021-07-21 19:07:44.315433141 +0200 +++ /work/SRC/openSUSE:Factory/.mt32emu.new.1899/mt32emu.changes 2021-08-18 08:57:02.106895665 +0200 @@ -1,0 +2,13 @@ +Tue Aug 17 08:25:09 UTC 2021 - ???????? ???????????? <[email protected]> + +- Updated to 2.5.2. + * Fixed possible access to uninitialised rhythm timbre memory when + using MT-32 control ROM. With control ROMs 2.04 and above, + the entire rhythm timbre memory is now initialised as the real + devices do. Those timbres that do not exist in MT-32 models are + now muted. With control ROMs 1.xx, the timbres 30..59 are mapped + to 0..29 that should correspond to the behaviour of real units. + The other 4 timbres are muted to avoid undefined behaviour the + real hardware exhibits. + +------------------------------------------------------------------- Old: ---- munt-libmt32emu_2_5_2.tar.gz New: ---- munt-libmt32emu_2_5_3.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ mt32emu.spec ++++++ --- /var/tmp/diff_new_pack.J4ohkk/_old 2021-08-18 08:57:02.718894945 +0200 +++ /var/tmp/diff_new_pack.J4ohkk/_new 2021-08-18 08:57:02.722894941 +0200 @@ -17,10 +17,10 @@ %define s_name munt-lib%{name}_%{s_ver} -%define s_ver 2_5_2 +%define s_ver 2_5_3 %define sover 2 Name: mt32emu -Version: 2.5.2 +Version: 2.5.3 Release: 0 Summary: An emulator of the Roland MT-32, CM-32L and LAPC-I synthesiser modules License: GPL-3.0-or-later AND LGPL-2.1-or-later ++++++ munt-libmt32emu_2_5_2.tar.gz -> munt-libmt32emu_2_5_3.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/munt-libmt32emu_2_5_2/mt32emu/CMakeLists.txt new/munt-libmt32emu_2_5_3/mt32emu/CMakeLists.txt --- old/munt-libmt32emu_2_5_2/mt32emu/CMakeLists.txt 2021-07-18 09:16:09.000000000 +0200 +++ new/munt-libmt32emu_2_5_3/mt32emu/CMakeLists.txt 2021-08-06 23:12:57.000000000 +0200 @@ -7,7 +7,7 @@ set(libmt32emu_URL "http://munt.sourceforge.net/") set(libmt32emu_VERSION_MAJOR 2) set(libmt32emu_VERSION_MINOR 5) -set(libmt32emu_VERSION_PATCH 2) +set(libmt32emu_VERSION_PATCH 3) set(libmt32emu_VERSION "${libmt32emu_VERSION_MAJOR}.${libmt32emu_VERSION_MINOR}.${libmt32emu_VERSION_PATCH}") if(${munt_WITH_MT32EMU_SMF2WAV} OR ${munt_WITH_MT32EMU_QT}) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/munt-libmt32emu_2_5_2/mt32emu/NEWS.txt new/munt-libmt32emu_2_5_3/mt32emu/NEWS.txt --- old/munt-libmt32emu_2_5_2/mt32emu/NEWS.txt 2021-07-18 09:16:09.000000000 +0200 +++ new/munt-libmt32emu_2_5_3/mt32emu/NEWS.txt 2021-08-06 23:12:57.000000000 +0200 @@ -1,3 +1,14 @@ +2021-08-07: + + 2.5.3 released. + + * Fixed possible access to uninitialised rhythm timbre memory when using MT-32 control ROM. + With control ROMs 2.04 and above, the entire rhythm timbre memory is now initialised + as the real devices do. Those timbres that do not exist in MT-32 models are now muted. + With control ROMs 1.xx, the timbres 30..59 are mapped to 0..29 that should correspond + to the behaviour of real units. The other 4 timbres are muted to avoid undefined behaviour + the real hardware exhibits. (#72) + 2021-07-18: 2.5.2 released. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/munt-libmt32emu_2_5_2/mt32emu/src/Synth.cpp new/munt-libmt32emu_2_5_3/mt32emu/src/Synth.cpp --- old/munt-libmt32emu_2_5_2/mt32emu/src/Synth.cpp 2021-07-18 09:16:09.000000000 +0200 +++ new/munt-libmt32emu_2_5_3/mt32emu/src/Synth.cpp 2021-08-06 23:12:57.000000000 +0200 @@ -72,7 +72,7 @@ { "ctrl_mt32_1_06", OLD_MT32_COMPATIBLE, 0x3000, 128, 0x8000, 0x0000, false, 0xC000, 0x4000, false, 0x3200, 30, 0x7414, 85, 0x57D9, 0x57F4, 0x57E2, 0x5264, 0x5270, 0x5280, 0x521C, 0x70CA, 19 }, { "ctrl_mt32_1_07", OLD_MT32_COMPATIBLE, 0x3000, 128, 0x8000, 0x0000, false, 0xC000, 0x4000, false, 0x3200, 30, 0x73fe, 85, 0x57B1, 0x57CC, 0x57BA, 0x523C, 0x5248, 0x5258, 0x51F4, 0x70B0, 19 }, // MT-32 revision 1 {"ctrl_mt32_bluer", OLD_MT32_COMPATIBLE, 0x3000, 128, 0x8000, 0x0000, false, 0xC000, 0x4000, false, 0x3200, 30, 0x741C, 85, 0x57E5, 0x5800, 0x57EE, 0x5270, 0x527C, 0x528C, 0x5228, 0x70CE, 19 }, // MT-32 Blue Ridge mod - {"ctrl_mt32_2_04", CM32L_COMPATIBLE, 0x8100, 128, 0x8000, 0x8000, true, 0x8080, 0x8000, true, 0x8500, 30, 0x8580, 85, 0x4F5D, 0x4F78, 0x4F66, 0x4899, 0x489D, 0x48B6, 0x48CD, 0x5A58, 19 }, + {"ctrl_mt32_2_04", CM32L_COMPATIBLE, 0x8100, 128, 0x8000, 0x8000, true, 0x8080, 0x8000, true, 0x8500, 64, 0x8580, 85, 0x4F5D, 0x4F78, 0x4F66, 0x4899, 0x489D, 0x48B6, 0x48CD, 0x5A58, 19 }, {"ctrl_cm32l_1_00", CM32L_COMPATIBLE, 0x8100, 256, 0x8000, 0x8000, true, 0x8080, 0x8000, true, 0x8500, 64, 0x8580, 85, 0x4F65, 0x4F80, 0x4F6E, 0x48A1, 0x48A5, 0x48BE, 0x48D5, 0x5A6C, 19 }, {"ctrl_cm32l_1_02", CM32L_COMPATIBLE, 0x8100, 256, 0x8000, 0x8000, true, 0x8080, 0x8000, true, 0x8500, 64, 0x8580, 85, 0x4F93, 0x4FAE, 0x4F9C, 0x48CB, 0x48CF, 0x48E8, 0x48FF, 0x5A96, 19 } // CM-32L // (Note that old MT-32 ROMs actually have 86 entries for rhythmTemp) @@ -717,6 +717,16 @@ return false; } + if (controlROMMap->timbreRCount == 30) { + // We must initialise all 64 rhythm timbres to avoid undefined behaviour. + // SEMI-CONFIRMED: Old-gen MT-32 units likely map timbres 30..59 to 0..29. + // Attempts to play rhythm timbres 60..63 exhibit undefined behaviour. + // We want to emulate the wrap around, so merely copy the entire set of standard + // timbres once more. The last 4 dangerous timbres are zeroed out. + memcpy(&mt32ram.timbres[222], &mt32ram.timbres[192], sizeof(*mt32ram.timbres) * 30); + memset(&mt32ram.timbres[252], 0, sizeof(*mt32ram.timbres) * 4); + } + #if MT32EMU_MONITOR_INIT printDebug("Initialising Timbre Bank M"); #endif
