Hello community, here is the log from the commit of package SDL_mixer for openSUSE:Factory checked in at 2013-11-25 16:04:09 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/SDL_mixer (Old) and /work/SRC/openSUSE:Factory/.SDL_mixer.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "SDL_mixer" Changes: -------- --- /work/SRC/openSUSE:Factory/SDL_mixer/SDL_mixer.changes 2013-09-27 18:29:53.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.SDL_mixer.new/SDL_mixer.changes 2013-11-25 16:04:10.000000000 +0100 @@ -1,0 +2,7 @@ +Sat Nov 23 19:19:39 UTC 2013 - [email protected] + +- import patches from https://projects.archlinux.org/svntogit/packages.git/tree/trunk?h=packages/sdl_mixer + to fix mixer / mikmod free corruption (bnc#851996) + Add double-free-crash.patch, mikmod1.patch and mikmod2.patch + +------------------------------------------------------------------- New: ---- double-free-crash.patch mikmod1.patch mikmod2.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ SDL_mixer.spec ++++++ --- /var/tmp/diff_new_pack.w8hPoM/_old 2013-11-25 16:04:11.000000000 +0100 +++ /var/tmp/diff_new_pack.w8hPoM/_new 2013-11-25 16:04:11.000000000 +0100 @@ -27,6 +27,12 @@ Source: http://libsdl.org/projects/SDL_mixer/release/%name-%version.tar.gz Source1: baselibs.conf +# PATCH-FIX-UPSTREAM: http://hg.libsdl.org/SDL_mixer/rev/56cad6484b04 +Patch1: mikmod1.patch +# PATCH-FIX-UPSTREAM: http://hg.libsdl.org/SDL_mixer/rev/2ebb0d016f27 +Patch2: mikmod2.patch +# PATCH-FIX-UPSTREAM: http://hg.libsdl.org/SDL_mixer/rev/2d713670db9b +Patch3: double-free-crash.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: flac-devel BuildRequires: fluidsynth-devel @@ -75,6 +81,9 @@ %prep %setup -q +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 # remove unneccessary files from upstream tarball [bnc#508180] to clean up source RPM rm libmikmod-3.1.12.zip rm Watcom-OS2.zip ++++++ double-free-crash.patch ++++++ # HG changeset patch # User Sam Lantinga <[email protected]> # 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); } ++++++ mikmod1.patch ++++++ # HG changeset patch # User Sam Lantinga <[email protected]> # 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(); ++++++ mikmod2.patch ++++++ # HG changeset patch # User Sam Lantinga <[email protected]> # 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; -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
