diff options
Diffstat (limited to 'media-sound/milkytracker/files')
6 files changed, 250 insertions, 219 deletions
diff --git a/media-sound/milkytracker/files/milkytracker-1.0.0-cmake.patch b/media-sound/milkytracker/files/milkytracker-1.0.0-cmake.patch deleted file mode 100644 index 391ec55c7d8d..000000000000 --- a/media-sound/milkytracker/files/milkytracker-1.0.0-cmake.patch +++ /dev/null @@ -1,148 +0,0 @@ -From 87d0f55cd8868d91472f96cccafaf6fdb9e0cbbc Mon Sep 17 00:00:00 2001 -From: Dale Whinham <daleyo@gmail.com> -Date: Thu, 31 Oct 2019 21:21:28 +0000 -Subject: [PATCH] CMake: Use SDL2's official CMake package mechanism - -We shouldn't need to rely on a FindSDL2.cmake, as SDL2 comes with a -CMake package definition that should be installed by the distro into a -location where CMake can find it. - -Fixes #168. ---- - CMakeLists.txt | 4 +- - cmake/FindSDL2.cmake | 104 ------------------------------------------- - 2 files changed, 1 insertion(+), 107 deletions(-) - delete mode 100644 cmake/FindSDL2.cmake - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 27ad4a18..5b6ed9f1 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -31,8 +31,6 @@ if(FORCESDL) - unset(APPLE) - unset(WIN32) - add_definitions(-D__FORCE_SDL_AUDIO__) -- # Frameworks not supported by findSDL2.cmake -- set(CMAKE_FIND_FRAMEWORK NEVER) - endif() - - # Lowercase project name for binaries and packaging -@@ -166,7 +164,7 @@ else() - # https://bugzilla.libsdl.org/show_bug.cgi?id=3295 - cmake_policy(SET CMP0004 OLD) - -- find_package(SDL2 2 REQUIRED) -+ find_package(SDL2 REQUIRED) - endif() - - # Prefer static linkage under OS X for libraries located with find_package() -diff --git a/cmake/FindSDL2.cmake b/cmake/FindSDL2.cmake -deleted file mode 100644 -index 27c78f05..00000000 ---- a/cmake/FindSDL2.cmake -+++ /dev/null -@@ -1,104 +0,0 @@ --# - Find SDL2 library and headers --# --# Find module for SDL 2.0 (http://www.libsdl.org/). --# It defines the following variables: --# SDL2_INCLUDE_DIRS - The location of the headers, e.g., SDL.h. --# SDL2_LIBRARIES - The libraries to link against to use SDL2. --# SDL2_FOUND - If false, do not try to use SDL2. --# SDL2_VERSION_STRING - Human-readable string containing the version of SDL2. --# --# This module responds to the the flag: --# SDL2_BUILDING_LIBRARY --# If this is defined, then no SDL2_main will be linked in because --# only applications need main(). --# Otherwise, it is assumed you are building an application and this --# module will attempt to locate and set the the proper link flags --# as part of the returned SDL2_LIBRARIES variable. --# --# Also defined, but not for general use are: --# SDL2_INCLUDE_DIR - The directory that contains SDL.h. --# SDL2_LIBRARY - The location of the SDL2 library. --# SDL2MAIN_LIBRARY - The location of the SDL2main library. --# -- --#============================================================================= --# Copyright 2013 Benjamin Eikel --# --# Redistribution and use in source and binary forms, with or without --# modification, are permitted provided that the following conditions are met: --# * Redistributions of source code must retain the above copyright --# notice, this list of conditions and the following disclaimer. --# * Redistributions in binary form must reproduce the above copyright --# notice, this list of conditions and the following disclaimer in the --# documentation and/or other materials provided with the distribution. --# * Neither the name of the <organization> nor the --# names of its contributors may be used to endorse or promote products --# derived from this software without specific prior written permission. --# --# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" --# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE --# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE --# ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY --# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES --# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; --# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND --# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT --# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF --# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --#============================================================================= -- --find_package(PkgConfig QUIET) --pkg_check_modules(PC_SDL2 QUIET sdl2) -- --find_path(SDL2_INCLUDE_DIR -- NAMES SDL.h -- HINTS -- ${PC_SDL2_INCLUDEDIR} -- ${PC_SDL2_INCLUDE_DIRS} -- PATH_SUFFIXES SDL2 --) -- --find_library(SDL2_LIBRARY -- NAMES SDL2 -- HINTS -- ${PC_SDL2_LIBDIR} -- ${PC_SDL2_LIBRARY_DIRS} -- PATH_SUFFIXES x64 x86 --) -- --if(NOT SDL2_BUILDING_LIBRARY) -- find_library(SDL2MAIN_LIBRARY -- NAMES SDL2main -- HINTS -- ${PC_SDL2_LIBDIR} -- ${PC_SDL2_LIBRARY_DIRS} -- PATH_SUFFIXES x64 x86 -- ) --endif() -- --if(SDL2_INCLUDE_DIR AND EXISTS "${SDL2_INCLUDE_DIR}/SDL_version.h") -- file(STRINGS "${SDL2_INCLUDE_DIR}/SDL_version.h" SDL2_VERSION_MAJOR_LINE REGEX "^#define[ \t]+SDL_MAJOR_VERSION[ \t]+[0-9]+$") -- file(STRINGS "${SDL2_INCLUDE_DIR}/SDL_version.h" SDL2_VERSION_MINOR_LINE REGEX "^#define[ \t]+SDL_MINOR_VERSION[ \t]+[0-9]+$") -- file(STRINGS "${SDL2_INCLUDE_DIR}/SDL_version.h" SDL2_VERSION_PATCH_LINE REGEX "^#define[ \t]+SDL_PATCHLEVEL[ \t]+[0-9]+$") -- string(REGEX REPLACE "^#define[ \t]+SDL_MAJOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_VERSION_MAJOR "${SDL2_VERSION_MAJOR_LINE}") -- string(REGEX REPLACE "^#define[ \t]+SDL_MINOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_VERSION_MINOR "${SDL2_VERSION_MINOR_LINE}") -- string(REGEX REPLACE "^#define[ \t]+SDL_PATCHLEVEL[ \t]+([0-9]+)$" "\\1" SDL2_VERSION_PATCH "${SDL2_VERSION_PATCH_LINE}") -- set(SDL2_VERSION_STRING ${SDL2_VERSION_MAJOR}.${SDL2_VERSION_MINOR}.${SDL2_VERSION_PATCH}) -- unset(SDL2_VERSION_MAJOR_LINE) -- unset(SDL2_VERSION_MINOR_LINE) -- unset(SDL2_VERSION_PATCH_LINE) -- unset(SDL2_VERSION_MAJOR) -- unset(SDL2_VERSION_MINOR) -- unset(SDL2_VERSION_PATCH) --endif() -- --set(SDL2_INCLUDE_DIRS ${SDL2_INCLUDE_DIR}) --set(SDL2_LIBRARIES ${SDL2MAIN_LIBRARY} ${SDL2_LIBRARY}) -- --include(FindPackageHandleStandardArgs) -- --find_package_handle_standard_args(SDL2 -- REQUIRED_VARS SDL2_INCLUDE_DIR SDL2_LIBRARY -- VERSION_VAR SDL2_VERSION_STRING) -- --mark_as_advanced(SDL2_INCLUDE_DIR SDL2_LIBRARY) diff --git a/media-sound/milkytracker/files/milkytracker-1.0.0-docdir.patch b/media-sound/milkytracker/files/milkytracker-1.0.0-docdir.patch deleted file mode 100644 index aeae02af2b0b..000000000000 --- a/media-sound/milkytracker/files/milkytracker-1.0.0-docdir.patch +++ /dev/null @@ -1,71 +0,0 @@ -From 56bf091a0e8c5242e160d37f2974f3e1e2525821 Mon Sep 17 00:00:00 2001 -From: David Seifert <soap@gentoo.org> -Date: Sun, 7 May 2017 10:49:21 +0200 -Subject: [PATCH] Use GNUInstallDirs in order to change installation paths - -* This allows distro-specific modification of directories - to adjust to different FHS layouts. ---- - CMakeLists.txt | 5 ++++- - docs/CMakeLists.txt | 2 +- - resources/music/CMakeLists.txt | 2 +- - src/tracker/CMakeLists.txt | 2 +- - 4 files changed, 7 insertions(+), 4 deletions(-) - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 996e2f0..bac54f3 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -19,9 +19,12 @@ - # along with MilkyTracker. If not, see <http://www.gnu.org/licenses/>. - # - --cmake_minimum_required(VERSION 2.6) -+cmake_minimum_required(VERSION 2.8.5) - project(MilkyTracker) - -+# Adhere to GNU filesystem layout conventions -+include(GNUInstallDirs) -+ - # Force SDL if requested - option(FORCESDL "Force SDL instead of native" OFF) - if(FORCESDL) -diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt -index 0aacc60..aca4a61 100644 ---- a/docs/CMakeLists.txt -+++ b/docs/CMakeLists.txt -@@ -35,7 +35,7 @@ elseif(WIN32) - set(INSTALL_DEST .) - else() - list(APPEND DOCUMENTS readme_unix) -- set(INSTALL_DEST share/doc/${PROJECT_NAME_LOWER}) -+ set(INSTALL_DEST ${CMAKE_INSTALL_DOCDIR}) - endif() - - install(FILES ${DOCUMENTS} DESTINATION ${INSTALL_DEST}) -diff --git a/resources/music/CMakeLists.txt b/resources/music/CMakeLists.txt -index f918b6e..f29fcd6 100644 ---- a/resources/music/CMakeLists.txt -+++ b/resources/music/CMakeLists.txt -@@ -24,7 +24,7 @@ file(GLOB SONGS "*.xm") - if(APPLE OR WIN32) - set(INSTALL_DEST "Example Songs") - else() -- set(INSTALL_DEST share/${PROJECT_NAME_LOWER}/songs) -+ set(INSTALL_DEST ${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME_LOWER}/songs) - endif() - - install(FILES ${SONGS} DESTINATION ${INSTALL_DEST}) -diff --git a/src/tracker/CMakeLists.txt b/src/tracker/CMakeLists.txt -index 1e4062e..b7a96a7 100644 ---- a/src/tracker/CMakeLists.txt -+++ b/src/tracker/CMakeLists.txt -@@ -399,7 +399,7 @@ target_link_libraries( - if(APPLE OR WIN32) - set(INSTALL_DEST .) - else() -- set(INSTALL_DEST bin) -+ set(INSTALL_DEST ${CMAKE_INSTALL_BINDIR}) - endif() - - install(TARGETS ${TARGET_NAME} DESTINATION ${INSTALL_DEST}) diff --git a/media-sound/milkytracker/files/milkytracker-1.02.00-CVE-2019-14464.patch b/media-sound/milkytracker/files/milkytracker-1.02.00-CVE-2019-14464.patch new file mode 100644 index 000000000000..d59522d6d1d0 --- /dev/null +++ b/media-sound/milkytracker/files/milkytracker-1.02.00-CVE-2019-14464.patch @@ -0,0 +1,26 @@ +This patch is from upstream: +https://github.com/milkytracker/MilkyTracker/commit/fd607a3439fcdd0992e5efded3c16fc79c804e34 + +commit fd607a3439fcdd0992e5efded3c16fc79c804e34 +Author: Christopher O'Neill <code@chrisoneill.co.uk> +Date: Tue Jul 30 19:11:58 2019 +0100 + + Fix #184: Heap overflow in S3M loader + +diff --git a/src/milkyplay/LoaderS3M.cpp b/src/milkyplay/LoaderS3M.cpp +index 5abf211..edf0fd5 100644 +--- a/src/milkyplay/LoaderS3M.cpp ++++ b/src/milkyplay/LoaderS3M.cpp +@@ -340,7 +340,11 @@ mp_sint32 LoaderS3M::load(XMFileBase& f, XModule* module) + return MP_OUT_OF_MEMORY; + + header->insnum = f.readWord(); // number of instruments +- header->patnum = f.readWord(); // number of patterns ++ if (header->insnum > MP_MAXINS) ++ return MP_LOADER_FAILED; ++ header->patnum = f.readWord(); // number of patterns ++ if (header->patnum > 256) ++ return MP_LOADER_FAILED; + + mp_sint32 flags = f.readWord(); // st3 flags + diff --git a/media-sound/milkytracker/files/milkytracker-1.02.00-CVE-2019-1449x.patch b/media-sound/milkytracker/files/milkytracker-1.02.00-CVE-2019-1449x.patch new file mode 100644 index 000000000000..0560cd2b825b --- /dev/null +++ b/media-sound/milkytracker/files/milkytracker-1.02.00-CVE-2019-1449x.patch @@ -0,0 +1,104 @@ +This patch is from upstream: +https://github.com/milkytracker/MilkyTracker/commit/ea7772a3fae0a9dd0a322e8fec441d15843703b7 + +commit ea7772a3fae0a9dd0a322e8fec441d15843703b7 +Author: Christopher O'Neill <code@chrisoneill.co.uk> +Date: Tue Jul 30 18:40:03 2019 +0100 + + Fixes for buffer overflow issues #182 & #183 + +diff --git a/src/milkyplay/LoaderXM.cpp b/src/milkyplay/LoaderXM.cpp +index 108d915..f87f5c1 100644 +--- a/src/milkyplay/LoaderXM.cpp ++++ b/src/milkyplay/LoaderXM.cpp +@@ -63,8 +63,8 @@ const char* LoaderXM::identifyModule(const mp_ubyte* buffer) + mp_sint32 LoaderXM::load(XMFileBase& f, XModule* module) + { + mp_ubyte insData[230]; +- mp_sint32 smpReloc[96]; +- mp_ubyte nbu[96]; ++ mp_sint32 smpReloc[MP_MAXINSSAMPS]; ++ mp_ubyte nbu[MP_MAXINSSAMPS]; + mp_uint32 fileSize = 0; + + module->cleanUp(); +@@ -117,6 +117,8 @@ mp_sint32 LoaderXM::load(XMFileBase& f, XModule* module) + memcpy(header->ord, hdrBuff+16, 256); + if(header->ordnum > MP_MAXORDERS) + header->ordnum = MP_MAXORDERS; ++ if(header->insnum > MP_MAXINS) ++ return MP_LOADER_FAILED; + + delete[] hdrBuff; + +@@ -143,7 +145,7 @@ mp_sint32 LoaderXM::load(XMFileBase& f, XModule* module) + f.read(&instr[y].type,1,1); + mp_uword numSamples = 0; + f.readWords(&numSamples,1); +- if(numSamples > 96) ++ if(numSamples > MP_MAXINSSAMPS) + return MP_LOADER_FAILED; + instr[y].samp = numSamples; + +@@ -169,8 +171,8 @@ mp_sint32 LoaderXM::load(XMFileBase& f, XModule* module) + if (instr[y].samp) { + mp_ubyte* insDataPtr = insData; + +- memcpy(nbu, insDataPtr, 96); +- insDataPtr+=96; ++ memcpy(nbu, insDataPtr, MP_MAXINSSAMPS); ++ insDataPtr+=MP_MAXINSSAMPS; + + TEnvelope venv; + TEnvelope penv; +@@ -285,7 +287,7 @@ mp_sint32 LoaderXM::load(XMFileBase& f, XModule* module) + + instr[y].samp = g; + +- for (sc = 0; sc < 96; sc++) { ++ for (sc = 0; sc < MP_MAXINSSAMPS; sc++) { + if (smpReloc[nbu[sc]] == -1) + instr[y].snum[sc] = -1; + else +@@ -491,6 +493,8 @@ mp_sint32 LoaderXM::load(XMFileBase& f, XModule* module) + f.read(&instr[y].type,1,1); + f.readWords(&instr[y].samp,1); + } ++ if (instr[y].samp > MP_MAXINSSAMPS) ++ return MP_LOADER_FAILED; + + //printf("%i, %i\n", instr[y].size, instr[y].samp); + +@@ -532,8 +536,8 @@ mp_sint32 LoaderXM::load(XMFileBase& f, XModule* module) + + //f.read(&nbu,1,96); + +- memcpy(nbu, insDataPtr, 96); +- insDataPtr+=96; ++ memcpy(nbu, insDataPtr, MP_MAXINSSAMPS); ++ insDataPtr+=MP_MAXINSSAMPS; + + TEnvelope venv; + TEnvelope penv; +@@ -650,7 +654,7 @@ mp_sint32 LoaderXM::load(XMFileBase& f, XModule* module) + + instr[y].samp = g; + +- for (sc = 0; sc < 96; sc++) { ++ for (sc = 0; sc < MP_MAXINSSAMPS; sc++) { + if (smpReloc[nbu[sc]] == -1) + instr[y].snum[sc] = -1; + else +diff --git a/src/milkyplay/XModule.h b/src/milkyplay/XModule.h +index f42d04b..4f04a2d 100644 +--- a/src/milkyplay/XModule.h ++++ b/src/milkyplay/XModule.h +@@ -40,6 +40,8 @@ + + #define MP_MAXTEXT 32 + #define MP_MAXORDERS 256 ++#define MP_MAXINS 255 ++#define MP_MAXINSSAMPS 96 + + struct TXMHeader + { diff --git a/media-sound/milkytracker/files/milkytracker-1.02.00-CVE-2020-15569.patch b/media-sound/milkytracker/files/milkytracker-1.02.00-CVE-2020-15569.patch new file mode 100644 index 000000000000..59c2f9942ae6 --- /dev/null +++ b/media-sound/milkytracker/files/milkytracker-1.02.00-CVE-2020-15569.patch @@ -0,0 +1,35 @@ +Fix is from upstream: +https://github.com/milkytracker/MilkyTracker/commit/7afd55c42ad80d01a339197a2d8b5461d214edaf + +Gentoo Bug: https://bugs.gentoo.org/711280 + +commit 7afd55c42ad80d01a339197a2d8b5461d214edaf +Author: Jeremy Clarke <geckojsc@gmail.com> +Date: Mon Apr 13 23:53:51 2020 +0100 + + Fix use-after-free in PlayerGeneric destructor + +diff --git a/src/milkyplay/PlayerGeneric.cpp b/src/milkyplay/PlayerGeneric.cpp +index 8df2c13..59f7cba 100644 +--- a/src/milkyplay/PlayerGeneric.cpp ++++ b/src/milkyplay/PlayerGeneric.cpp +@@ -202,15 +202,16 @@ PlayerGeneric::PlayerGeneric(mp_sint32 frequency, AudioDriverInterface* audioDri + + PlayerGeneric::~PlayerGeneric() + { +- if (mixer) +- delete mixer; + + if (player) + { +- if (mixer->isActive() && !mixer->isDeviceRemoved(player)) ++ if (mixer && mixer->isActive() && !mixer->isDeviceRemoved(player)) + mixer->removeDevice(player); + delete player; + } ++ ++ if (mixer) ++ delete mixer; + + delete[] audioDriverName; + diff --git a/media-sound/milkytracker/files/milkytracker-1.02.00-fix-hard-dependency-on-rtmidi.patch b/media-sound/milkytracker/files/milkytracker-1.02.00-fix-hard-dependency-on-rtmidi.patch new file mode 100644 index 000000000000..090e433b5fdc --- /dev/null +++ b/media-sound/milkytracker/files/milkytracker-1.02.00-fix-hard-dependency-on-rtmidi.patch @@ -0,0 +1,85 @@ +From f85f5336df72dc44e407ae756ed20a8f8422cb76 Mon Sep 17 00:00:00 2001 +From: Dale Whinham <daleyo@gmail.com> +Date: Sat, 11 Apr 2020 16:51:31 +0100 +Subject: [PATCH] Fix hard dependency on RtMidi + +It is perfectly reasonable for libasound to be installed, but not +librtmidi, and so we should only enable the MIDI code if both are +present. + +Fixes #207. +--- + src/tracker/CMakeLists.txt | 1 + + src/tracker/sdl/SDL_Main.cpp | 12 ++++++------ + 2 files changed, 7 insertions(+), 6 deletions(-) + +diff --git a/src/tracker/CMakeLists.txt b/src/tracker/CMakeLists.txt +index 0a935330..f4243a0f 100644 +--- a/src/tracker/CMakeLists.txt ++++ b/src/tracker/CMakeLists.txt +@@ -348,6 +348,7 @@ elseif(WIN32) + target_link_libraries(tracker midi) + else() + if(ALSA_FOUND AND RTMIDI_FOUND) ++ target_compile_definitions(tracker PRIVATE -DHAVE_LIBRTMIDI) + target_link_libraries(tracker midi) + endif() + endif() +diff --git a/src/tracker/sdl/SDL_Main.cpp b/src/tracker/sdl/SDL_Main.cpp +index 1a49fc12..75ffa1df 100644 +--- a/src/tracker/sdl/SDL_Main.cpp ++++ b/src/tracker/sdl/SDL_Main.cpp +@@ -78,7 +78,7 @@ + #include "PPSystem_POSIX.h" + #include "PPPath_POSIX.h" + +-#ifdef HAVE_LIBASOUND ++#ifdef HAVE_LIBRTMIDI + #include "../midi/posix/MidiReceiver_pthread.h" + #endif + // -------------------------------------------------------------------------- +@@ -89,7 +89,7 @@ static SDL_TimerID timer; + static PPScreen* myTrackerScreen = NULL; + static Tracker* myTracker = NULL; + static PPDisplayDevice* myDisplayDevice = NULL; +-#ifdef HAVE_LIBASOUND ++#ifdef HAVE_LIBRTMIDI + static MidiReceiver* myMidiReceiver = NULL; + #endif + +@@ -223,7 +223,7 @@ static Uint32 SDLCALL timerCallback(Uint32 interval, void* param) + return interval; + } + +-#ifdef HAVE_LIBASOUND ++#ifdef HAVE_LIBRTMIDI + class MidiEventHandler : public MidiReceiver::MidiEventHandler + { + public: +@@ -829,7 +829,7 @@ myDisplayDevice = new PPDisplayDeviceFB(windowSize.width, windowSize.height, sca + // Startup procedure + myTracker->startUp(noSplash); + +-#ifdef HAVE_LIBASOUND ++#ifdef HAVE_LIBRTMIDI + InitMidi(); + #endif + +@@ -962,7 +962,7 @@ int main(int argc, char *argv[]) + initTracker(defaultBPP, orientation, swapRedBlue, noSplash); + globalMutex->unlock(); + +-#ifdef HAVE_LIBASOUND ++#ifdef HAVE_LIBRTMIDI + if (myMidiReceiver && recVelocity) + { + myMidiReceiver->setRecordVelocity(true); +@@ -1036,7 +1036,7 @@ int main(int argc, char *argv[]) + SDL_RemoveTimer(timer); + + globalMutex->lock(); +-#ifdef HAVE_LIBASOUND ++#ifdef HAVE_LIBRTMIDI + delete myMidiReceiver; + #endif + delete myTracker; |