rbuilt with debug package, -tools subpackage and patches taken from Arch Linux [release 1.2.12-2mamba;Tue Feb 08 2022]

This commit is contained in:
Silvan Calarco 2024-01-06 03:38:35 +01:00
parent 06044fd071
commit e4c74aab8b
6 changed files with 235 additions and 11 deletions

View File

@ -0,0 +1,32 @@
# HG changeset patch
# User Sam Lantinga <slouken@libsdl.org>
# Date 1329087437 18000
# Node ID 2d713670db9b832b0c5aa700824900bc1fc3c3cd
# Parent df72f22b4b411ad4b08f924329678aabd5ac97d6
Fixed 1418 - crash on double free if loading WAV file failed
diff -r df72f22b4b41 -r 2d713670db9b mixer.c
--- a/mixer.c Mon Jan 30 21:41:45 2012 -0500
+++ b/mixer.c Sun Feb 12 17:57:17 2012 -0500
@@ -610,13 +610,15 @@
break;
default:
SDL_SetError("Unrecognized sound file type");
- return(0);
+ if ( freesrc ) {
+ SDL_RWclose(src);
+ }
+ loaded = NULL;
+ break;
}
if ( !loaded ) {
+ /* The individual loaders have closed src if needed */
SDL_free(chunk);
- if ( freesrc ) {
- SDL_RWclose(src);
- }
return(NULL);
}

View File

@ -0,0 +1,37 @@
From 452a55c5d8cd78621114b8aaa258377403797ea7 Mon Sep 17 00:00:00 2001
From: Ozkan Sezer <sezeroz@gmail.com>
Date: Fri, 22 Jan 2021 17:47:01 +0300
Subject: [PATCH] Fix use-after-free in music_fluidsynth.c (backport from
default branch)
Tom M.
There is a dangerous use-after-free in FLUIDSYNTH_Delete(): the settings
object is deleted **before** the synth. Since the settings have been
created first to initialize the synth, you must first delete the synth
and then delete the settings. This currently crashes all applications
that use fluidsynth 2.1.6 and SDL2_mixer.
Originally reported at https://github.com/FluidSynth/fluidsynth/issues/748
---
fluidsynth.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/fluidsynth.c b/fluidsynth.c
index 717d8aa..179d79c 100644
--- a/fluidsynth.c
+++ b/fluidsynth.c
@@ -152,10 +152,12 @@ FluidSynthMidiSong *fluidsynth_loadsong_RW(SDL_RWops *rw, int freerw)
void fluidsynth_freesong(FluidSynthMidiSong *song)
{
+ fluid_settings_t *settings;
if (!song) return;
+ settings = fluidsynth.fluid_synth_get_settings(song->synth);
fluidsynth.delete_fluid_player(song->player);
- fluidsynth.delete_fluid_settings(fluidsynth.fluid_synth_get_settings(song->synth));
fluidsynth.delete_fluid_synth(song->synth);
+ fluidsynth.delete_fluid_settings(settings);
SDL_free(song);
}

View File

@ -0,0 +1,23 @@
# HG changeset patch
# User James Le Cuirot <chewi@aura-online.co.uk>
# Date 1330896767 0
# Node ID c92001a2c18f628698c58aa4e05a7335d10d0e9e
# Parent 2d713670db9b832b0c5aa700824900bc1fc3c3cd
Raise the maximum FluidSynth gain from 0.8 to 1.2 because apparently the former is too quiet in some cases.
diff -r 2d713670db9b -r c92001a2c18f fluidsynth.c
--- a/fluidsynth.c Sun Feb 12 17:57:17 2012 -0500
+++ b/fluidsynth.c Sun Mar 04 21:32:47 2012 +0000
@@ -176,8 +176,8 @@
void fluidsynth_setvolume(FluidSynthMidiSong *song, int volume)
{
- /* FluidSynth's default is 0.2. Make 0.8 the maximum. */
- fluidsynth.fluid_synth_set_gain(song->synth, (float) (volume * 0.00625));
+ /* FluidSynth's default is 0.2. Make 1.2 the maximum. */
+ fluidsynth.fluid_synth_set_gain(song->synth, (float) (volume * 1.2 / MIX_MAX_VOLUME));
}
int fluidsynth_playsome(FluidSynthMidiSong *song, void *dest, int dest_len)

View File

@ -0,0 +1,67 @@
# HG changeset patch
# User Sam Lantinga <slouken@libsdl.org>
# Date 1342998807 25200
# Node ID 56cad6484b04f83c8d42428c755a046678506436
# Parent c92001a2c18f628698c58aa4e05a7335d10d0e9e
Paul P Komkoff Jr fixed malloc/free mismatch in the MikMod driver
diff -r c92001a2c18f -r 56cad6484b04 CHANGES
--- a/CHANGES Sun Mar 04 21:32:47 2012 +0000
+++ b/CHANGES Sun Jul 22 16:13:27 2012 -0700
@@ -1,3 +1,7 @@
+1.2.13:
+Paul P Komkoff Jr - Sun Jul 22 16:12:28 PDT 2012
+ * Fixed malloc/free mismatch in the MikMod driver
+
1.2.12:
Sam Lantinga - Sat Jan 14 22:00:29 2012 -0500
* Fixed seek offset with SMPEG (was relative, should be absolute)
diff -r c92001a2c18f -r 56cad6484b04 dynamic_mod.c
--- a/dynamic_mod.c Sun Mar 04 21:32:47 2012 +0000
+++ b/dynamic_mod.c Sun Jul 22 16:13:27 2012 -0700
@@ -93,6 +93,13 @@
SDL_UnloadObject(mikmod.handle);
return -1;
}
+ mikmod.MikMod_free =
+ (void (*)(void*))
+ SDL_LoadFunction(mikmod.handle, "MikMod_free");
+ if ( mikmod.MikMod_free == NULL ) {
+ SDL_UnloadObject(mikmod.handle);
+ return -1;
+ }
mikmod.Player_Active =
(BOOL (*)(void))
SDL_LoadFunction(mikmod.handle, "Player_Active");
diff -r c92001a2c18f -r 56cad6484b04 dynamic_mod.h
--- a/dynamic_mod.h Sun Mar 04 21:32:47 2012 +0000
+++ b/dynamic_mod.h Sun Jul 22 16:13:27 2012 -0700
@@ -35,6 +35,7 @@
void (*MikMod_RegisterDriver)(struct MDRIVER*);
int* MikMod_errno;
char* (*MikMod_strerror)(int);
+ void (*MikMod_free)(void*);
BOOL (*Player_Active)(void);
void (*Player_Free)(MODULE*);
MODULE* (*Player_LoadGeneric)(MREADER*,int,BOOL);
diff -r c92001a2c18f -r 56cad6484b04 music_mod.c
--- a/music_mod.c Sun Mar 04 21:32:47 2012 +0000
+++ b/music_mod.c Sun Jul 22 16:13:27 2012 -0700
@@ -109,13 +109,13 @@
list = mikmod.MikMod_InfoDriver();
if ( list )
- free(list);
+ mikmod.MikMod_free(list);
else
mikmod.MikMod_RegisterDriver(mikmod.drv_nos);
list = mikmod.MikMod_InfoLoader();
if ( list )
- free(list);
+ mikmod.MikMod_free(list);
else
mikmod.MikMod_RegisterAllLoaders();

View File

@ -0,0 +1,35 @@
# HG changeset patch
# User Sam Lantinga <slouken@libsdl.org>
# Date 1343000017 25200
# Node ID 2ebb0d016f277f7f643d8a66ed0e1099e10d1fba
# Parent 56cad6484b04f83c8d42428c755a046678506436
Fixed normal linking with libmikmod and linking with earlier versions of libmikmod.
diff -r 56cad6484b04 -r 2ebb0d016f27 dynamic_mod.c
--- a/dynamic_mod.c Sun Jul 22 16:13:27 2012 -0700
+++ b/dynamic_mod.c Sun Jul 22 16:33:37 2012 -0700
@@ -97,8 +97,8 @@
(void (*)(void*))
SDL_LoadFunction(mikmod.handle, "MikMod_free");
if ( mikmod.MikMod_free == NULL ) {
- SDL_UnloadObject(mikmod.handle);
- return -1;
+ /* libmikmod 3.1 and earlier doesn't have it */
+ mikmod.MikMod_free = free;
}
mikmod.Player_Active =
(BOOL (*)(void))
@@ -246,6 +246,11 @@
mikmod.MikMod_RegisterDriver = MikMod_RegisterDriver;
mikmod.MikMod_errno = &MikMod_errno;
mikmod.MikMod_strerror = MikMod_strerror;
+#if LIBMIKMOD_VERSION < ((3<<16)|(2<<8))
+ mikmod.MikMod_free = free;
+#else
+ mikmod.MikMod_free = MikMod_free;
+#endif
mikmod.Player_Active = Player_Active;
mikmod.Player_Free = Player_Free;
mikmod.Player_LoadGeneric = Player_LoadGeneric;

View File

@ -1,24 +1,30 @@
Name: libSDL_mixer Name: libSDL_mixer
Version: 1.2.12 Version: 1.2.12
Release: 1mamba Release: 2mamba
Summary: SDL_mixer is a sample multi-channel audio mixer library Summary: SDL_mixer is a sample multi-channel audio mixer library
Group: System/Libraries Group: System/Libraries
Vendor: openmamba Vendor: openmamba
Distribution: openmamba Distribution: openmamba
Packager: Silvan Calarco <silvan.calarco@mambasoft.it> Packager: Silvan Calarco <silvan.calarco@mambasoft.it>
URL: http://www.libsdl.org/projects/SDL_mixer/ URL: https://www.libsdl.org/projects/SDL_mixer/
Source: http://www.libsdl.org/projects/SDL_mixer/release/SDL_mixer-%{version}.tar.gz Source: https://www.libsdl.org/projects/SDL_mixer/release/SDL_mixer-%{version}.tar.gz
Patch0: libSDL_mixer-1.2.12-double-free-crash.patch
Patch1: libSDL_mixer-1.2.12-fluidsynth-use-after-free.patch
Patch2: libSDL_mixer-1.2.12-fluidsynth-volume.patch
Patch3: libSDL_mixer-1.2.12-mikmod1.patch
Patch4: libSDL_mixer-1.2.12-mikmod2.patch
License: LGPL License: LGPL
## AUTOBUILDREQ-BEGIN ## AUTOBUILDREQ-BEGIN
BuildRequires: glibc-devel BuildRequires: glibc-devel
BuildRequires: libdirectfb-devel
BuildRequires: libSDL-devel BuildRequires: libSDL-devel
BuildRequires: libdirectfb-devel
BuildRequires: libstdc++6-devel
BuildRequires: libts-devel
BuildRequires: libz-devel BuildRequires: libz-devel
## AUTOBUILDREQ-END ## AUTOBUILDREQ-END
BuildRequires: libvorbis-devel BuildRequires: libvorbis-devel
BuildRequires: libsmpeg-devel BuildRequires: libsmpeg-devel
BuildRequires: libmikmod-devel BuildRequires: libmikmod-devel
BuildRoot: %{_tmppath}/%{name}-%{version}-root
%description %description
SDL_mixer is a sample multi-channel audio mixer library. SDL_mixer is a sample multi-channel audio mixer library.
@ -32,14 +38,32 @@ Requires: %{name} = %{?epoch:%epoch:}%{version}-%{release}
%description devel %description devel
SDL_mixer is a sample multi-channel audio mixer library. SDL_mixer is a sample multi-channel audio mixer library.
It supports any number of simultaneously playing channels of 16 bit stereo audio, plus a single channel of music, mixed by the popular MikMod MOD, Timidity MIDI, Ogg Vorbis, and SMPEG MP3 libraries. It supports any number of simultaneously playing channels of 16 bit stereo audio, plus a single channel of music, mixed by the popular MikMod MOD, Timidity MIDI, Ogg Vorbis, and SMPEG MP3 libraries.
This package contains static libraries and header files needed for development.
This package contains static libraries and header files need for development. %package tools
Group: Applications/Multimedia
Summary: Tools provided with %{name}
Requires: %{name} = %{?epoch:%epoch:}%{version}-%{release}
%description tools
SDL_mixer is a sample multi-channel audio mixer library.
It supports any number of simultaneously playing channels of 16 bit stereo audio, plus a single channel of music, mixed by the popular MikMod MOD, Timidity MIDI, Ogg Vorbis, and SMPEG MP3 libraries.
This package contains static the tools provided with %{name}.
%debug_package
%prep %prep
%setup -q -n SDL_mixer-%{version} %setup -q -n SDL_mixer-%{version}
%patch0 -p1 -b .double-free-crash
%patch1 -p1 -b .fluidsynth-use-after-free
%patch2 -p1 -b .fluidsynth-volume
%patch3 -p1 -b .mikmod1
%patch4 -p1 -b .mikmod2
sed -i "s,| arm-\* |,| aarch64-\* | arm-\* |," build-scripts/config.sub
%build %build
%configure --disable-smpegtest %configure
#--disable-smpegtest
%make LDFLAGS=-lm %make LDFLAGS=-lm
%install %install
@ -54,21 +78,27 @@ This package contains static libraries and header files need for development.
%files %files
%defattr(-,root,root) %defattr(-,root,root)
%{_bindir}/playmus
%{_bindir}/playwave
%{_libdir}/libSDL_mixer*.so.* %{_libdir}/libSDL_mixer*.so.*
%doc CHANGES COPYING README %doc COPYING
%files devel %files devel
%defattr(-,root,root) %defattr(-,root,root)
%dir %{_includedir}/SDL
%{_includedir}/SDL/*.h %{_includedir}/SDL/*.h
%{_libdir}/libSDL_mixer.a %{_libdir}/libSDL_mixer.a
%{_libdir}/libSDL_mixer.la %{_libdir}/libSDL_mixer.la
%{_libdir}/libSDL_mixer.so %{_libdir}/libSDL_mixer.so
%{_libdir}/pkgconfig/SDL_mixer.pc %{_libdir}/pkgconfig/SDL_mixer.pc
%doc CHANGES README
%files tools
%defattr(-,root,root)
%{_bindir}/playmus
%{_bindir}/playwave
%changelog %changelog
* Tue Feb 08 2022 Silvan Calarco <silvan.calarco@mambasoft.it> 1.2.12-2mamba
- rbuilt with debug package, -tools subpackage and patches taken from Arch Linux
* Mon Jan 23 2012 Automatic Build System <autodist@mambasoft.it> 1.2.12-1mamba * Mon Jan 23 2012 Automatic Build System <autodist@mambasoft.it> 1.2.12-1mamba
- automatic version update by autodist - automatic version update by autodist