From 33965b51bc72a902992e62a1bad73f31241fd97f Mon Sep 17 00:00:00 2001 From: Juan RP Date: Fri, 25 Dec 2009 22:39:34 +0100 Subject: [PATCH] Added libmikmod-3.1.12 build template. --HG-- extra : convert_revision : c0cdc89d245897ebfcc77d7a56f76bc1214b19e6 --- srcpkgs/libmikmod-devel | 1 + srcpkgs/libmikmod/depends | 2 + srcpkgs/libmikmod/libmikmod-devel.template | 18 +++ .../patches/libmikmod-3.1.12-64bit-fix.diff | 45 +++++++ .../libmikmod-3.1.12-exitcrash-fix.diff | 20 ++++ .../libmikmod-3.1.12-loopingvolume-fix.diff | 14 +++ .../libmikmod-3.1.12-md_sngchn-fix.diff | 111 ++++++++++++++++++ .../patches/libmikmod-CVE-2009-0179.patch | 31 +++++ srcpkgs/libmikmod/template | 28 +++++ 9 files changed, 270 insertions(+) create mode 120000 srcpkgs/libmikmod-devel create mode 100644 srcpkgs/libmikmod/depends create mode 100644 srcpkgs/libmikmod/libmikmod-devel.template create mode 100644 srcpkgs/libmikmod/patches/libmikmod-3.1.12-64bit-fix.diff create mode 100644 srcpkgs/libmikmod/patches/libmikmod-3.1.12-exitcrash-fix.diff create mode 100644 srcpkgs/libmikmod/patches/libmikmod-3.1.12-loopingvolume-fix.diff create mode 100644 srcpkgs/libmikmod/patches/libmikmod-3.1.12-md_sngchn-fix.diff create mode 100644 srcpkgs/libmikmod/patches/libmikmod-CVE-2009-0179.patch create mode 100644 srcpkgs/libmikmod/template diff --git a/srcpkgs/libmikmod-devel b/srcpkgs/libmikmod-devel new file mode 120000 index 00000000000..a595774b214 --- /dev/null +++ b/srcpkgs/libmikmod-devel @@ -0,0 +1 @@ +libmikmod \ No newline at end of file diff --git a/srcpkgs/libmikmod/depends b/srcpkgs/libmikmod/depends new file mode 100644 index 00000000000..b7c1818cdae --- /dev/null +++ b/srcpkgs/libmikmod/depends @@ -0,0 +1,2 @@ +abi_depends=">=3.1.12" +api_depends="${abi_depends}" diff --git a/srcpkgs/libmikmod/libmikmod-devel.template b/srcpkgs/libmikmod/libmikmod-devel.template new file mode 100644 index 00000000000..d90189e211c --- /dev/null +++ b/srcpkgs/libmikmod/libmikmod-devel.template @@ -0,0 +1,18 @@ +# Template file for 'libmikmod-devel'. +# +short_desc="${short_desc} (development files)" +long_desc="${long_desc} + + This package contains files for development, headers, static libs, etc." + +Add_dependency run glibc-devel + +do_install() +{ + mkdir -p ${DESTDIR}/usr/lib + mv ${SRCPKGDESTDIR}/usr/bin ${DESTDIR}/usr + mv ${SRCPKGDESTDIR}/usr/include ${DESTDIR}/usr + mv ${SRCPKGDESTDIR}/usr/lib/*.*a ${DESTDIR}/usr/lib + mv ${SRCPKGDESTDIR}/usr/lib/*.so ${DESTDIR}/usr/lib + mv ${SRCPKGDESTDIR}/usr/share ${DESTDIR}/usr +} diff --git a/srcpkgs/libmikmod/patches/libmikmod-3.1.12-64bit-fix.diff b/srcpkgs/libmikmod/patches/libmikmod-3.1.12-64bit-fix.diff new file mode 100644 index 00000000000..d0087823223 --- /dev/null +++ b/srcpkgs/libmikmod/patches/libmikmod-3.1.12-64bit-fix.diff @@ -0,0 +1,45 @@ +Date: Sun, 04 Jul 2004 11:53:23 +0200 +From: Josselin Mouette +Subject: Re: sdl 64bit problem [PATCH] + +Le sam, 03/07/2004 � 18:20 +0200, Hans-Frieder Vogt a �crit : +> Hi list, +> +> I found the problem that lead to the distorted sound in tuxracer on AMD64. It +> may have also been the cause for the other reported sound problems with SDL. +> The problem is not in SDL, but in SDL-mixer. +> There, music files (*.it, and probably others as well) are incorrectly read on +> all 64 bit architectures but Alpha, due to an incorrect data type definition. +> The attached patch should solve the problem for all 64 bit architectures on +> Linux, since at least cpp defines _LP64 and __LP64__ for them. +> _LP64 indicates that long ints and pointers are 64 bits, but integers are 32 +> bits. +> I am not sure whether the usage of _LP64 is also standard for the commercial +> compilers, and for other Unixes, but at least Solaris 9 defines _LP64 in the +> 64 bit environment as well. +> +> Josselin, +> could you include this patch into your next debian packages? + +--- include/mikmod.h.in 2007-12-15 01:24:19.000000000 -0800 ++++ include/mikmod.h.in 2009-10-05 00:18:56.000000000 -0700 +@@ -85,7 +85,7 @@ + + @DOES_NOT_HAVE_SIGNED@ + +-#if defined(__arch64__) || defined(__alpha) || defined(__x86_64) ++#if defined(__arch64__) || defined(__alpha) || defined(__x86_64) || defined(_LP64) + /* 64 bit architectures */ + + typedef signed char SBYTE; /* 1 byte, signed */ +--- include/mikmod_internals.h 2007-12-15 04:24:51.000000000 -0800 ++++ include/mikmod_internals.h 2009-10-05 00:19:15.000000000 -0700 +@@ -50,7 +50,7 @@ + /*========== More type definitions */ + + /* SLONGLONG: 64bit, signed */ +-#if defined (__arch64__) || defined(__alpha) ++#if defined(__arch64__) || defined(__alpha) || defined(__x86_64) || defined(_LP64) + typedef long SLONGLONG; + #define NATIVE_64BIT_INT + #elif defined(__WATCOMC__) diff --git a/srcpkgs/libmikmod/patches/libmikmod-3.1.12-exitcrash-fix.diff b/srcpkgs/libmikmod/patches/libmikmod-3.1.12-exitcrash-fix.diff new file mode 100644 index 00000000000..7b83053612a --- /dev/null +++ b/srcpkgs/libmikmod/patches/libmikmod-3.1.12-exitcrash-fix.diff @@ -0,0 +1,20 @@ +Date: 15 Apr 2002 11:01:19 +0200 +From: Guillaume Cottenceau + +Unfortunately, I should have double checked that the following +fix (authored by Dave Goehrig , not me), +was really in the CVS... it's not, as of stable 1.2.3 at least. +Please include it, it fixes a segfault on exiting a program which +disabled MOD music during its execution. + +--- playercode/virtch_common.c 2007-12-15 01:26:53.000000000 -0800 ++++ playercode/virtch_common.c 2009-10-05 00:37:12.000000000 -0700 +@@ -347,7 +347,7 @@ + + void VC1_SampleUnload(SWORD handle) + { +- if (handlevolume=(volume<0)?0:(volume>128)?128:volume; ++ pf->volume=pf->initvolume=(volume<0)?0:(volume>128)?128:volume; + MUTEX_UNLOCK(vars); + } + diff --git a/srcpkgs/libmikmod/patches/libmikmod-3.1.12-md_sngchn-fix.diff b/srcpkgs/libmikmod/patches/libmikmod-3.1.12-md_sngchn-fix.diff new file mode 100644 index 00000000000..0372935f5b8 --- /dev/null +++ b/srcpkgs/libmikmod/patches/libmikmod-3.1.12-md_sngchn-fix.diff @@ -0,0 +1,111 @@ +This patch fixes "buffer overflow due to md_numchn - ID: 1630158" + +--- playercode/mplayer.c 2007-12-15 01:26:28.000000000 -0800 ++++ playercode/mplayer.c 2009-10-04 23:48:36.000000000 -0700 +@@ -52,6 +52,8 @@ + will wait */ + /*static*/ MODULE *pf = NULL; + ++#define NUMVOICES(mod) (md_sngchn < (mod)->numvoices ? md_sngchn : (mod)->numvoices) ++ + #define HIGH_OCTAVE 2 /* number of above-range octaves */ + + static UWORD oldperiods[OCTAVE*2]={ +@@ -248,14 +250,14 @@ + MP_VOICE *a; + ULONG t,k,tvol,pp; + +- for (t=0;tvoice[t].main.kick==KICK_ABSENT)|| + (mod->voice[t].main.kick==KICK_ENV))&& + Voice_Stopped_internal(t)) + return t; + + tvol=0xffffffUL;t=-1;a=mod->voice; +- for (k=0;kmain.s) + return k; +@@ -2249,12 +2251,12 @@ + + switch (dat) { + case 0x0: /* past note cut */ +- for (t=0;tvoice[t].master==a) + mod->voice[t].main.fadevol=0; + break; + case 0x1: /* past note off */ +- for (t=0;tvoice[t].master==a) { + mod->voice[t].main.keyoff|=KEY_OFF; + if ((!(mod->voice[t].venv.flg & EF_ON))|| +@@ -2263,7 +2265,7 @@ + } + break; + case 0x2: /* past note fade */ +- for (t=0;tvoice[t].master==a) + mod->voice[t].main.keyoff|=KEY_FADE; + break; +@@ -2318,7 +2320,7 @@ + SAMPLE *s; + + mod->totalchn=mod->realchn=0; +- for (channel=0;channelvoice[channel]; + i=aout->main.i; + s=aout->main.s; +@@ -2736,7 +2738,7 @@ + if (a->dct!=DCT_OFF) { + int t; + +- for (t=0;tvoice[t].masterchn==channel)&& + (a->main.sample==mod->voice[t].main.sample)) { +@@ -2978,6 +2980,11 @@ + if (!(mod->voice=(MP_VOICE*)_mm_calloc(md_sngchn,sizeof(MP_VOICE)))) + return 1; + ++ /* mod->numvoices was used during loading to clamp md_sngchn. ++ After loading it's used to remember how big mod->voice is. ++ */ ++ mod->numvoices = md_sngchn; ++ + Player_Init_internal(mod); + return 0; + } +@@ -3086,7 +3093,7 @@ + pf->patbrk=0; + pf->vbtick=pf->sngspd; + +- for (t=0;tvoice[t].main.i=NULL; + pf->voice[t].main.s=NULL; +@@ -3111,7 +3118,7 @@ + pf->patbrk=0; + pf->vbtick=pf->sngspd; + +- for (t=0;tvoice[t].main.i=NULL; + pf->voice[t].main.s=NULL; +@@ -3138,7 +3145,7 @@ + pf->sngpos=pos; + pf->vbtick=pf->sngspd; + +- for (t=0;tvoice[t].main.i=NULL; + pf->voice[t].main.s=NULL; diff --git a/srcpkgs/libmikmod/patches/libmikmod-CVE-2009-0179.patch b/srcpkgs/libmikmod/patches/libmikmod-CVE-2009-0179.patch new file mode 100644 index 00000000000..c428c2e7364 --- /dev/null +++ b/srcpkgs/libmikmod/patches/libmikmod-CVE-2009-0179.patch @@ -0,0 +1,31 @@ +--- loaders/load_xm.c 2004-01-21 18:43:53.000000000 +0100 ++++ loaders/load_xm.c 2008-04-16 04:30:45.000000000 +0200 +@@ -622,7 +622,8 @@ + /* read the remainder of the header */ + for(u=headend-_mm_ftell(modreader);u;u--) _mm_read_UBYTE(modreader); + +- if(_mm_eof(modreader)) { ++ /* last instrument is at the end of file in version 0x0104 */ ++ if(_mm_eof(modreader) && (mh->version<0x0104 || tInit || l->Init()) { + _mm_rewind(modreader); + ok = l->Load(curious); +- /* propagate inflags=flags for in-module samples */ +- for (t = 0; t < of.numsmp; t++) +- if (of.samples[t].inflags == 0) +- of.samples[t].inflags = of.samples[t].flags; ++ if (ok) { ++ /* propagate inflags=flags for in-module samples */ ++ for (t = 0; t < of.numsmp; t++) ++ if (of.samples[t].inflags == 0) ++ of.samples[t].inflags = of.samples[t].flags; ++ } + } else + ok = 0; + diff --git a/srcpkgs/libmikmod/template b/srcpkgs/libmikmod/template new file mode 100644 index 00000000000..18ba98674c1 --- /dev/null +++ b/srcpkgs/libmikmod/template @@ -0,0 +1,28 @@ +# Template file for 'libmikmod' +pkgname=libmikmod +version=3.1.12 +distfiles="${SOURCEFORGE_SITE}/mikmod/$pkgname-$version.tar.gz" +build_style=gnu_configure +configure_args="--disable-esd" +short_desc="MikMod Sound Library" +maintainer="Juan RP " +checksum=891a2b780306e6ef86e381f459e71a085d4e7f56c970a879d3bf341c01bdfc32 +long_desc=" + The MikMod sound library is an excellent way for a programmer to + add music and sound effects to an application. It is a powerful + and flexible library, with a simple and easy-to-learn API. + + Besides, the library is very portable and runs under a lot of + Unices, as well as under OS/2, MacOS and Windows. Third party + individuals also maintain ports on other systems, including MS-DOS, + and BeOS. + + MikMod is able to play a wide range of module formats, as well as + digital sound files. It can take advantage of particular features + of your system, such as sound redirection over the network. And + due to its modular nature, the library can be extended to support + more sound or module formats, as well as new hardware or other + sound output capabilities, as they appear." + +subpackages="$pkgname-devel" +Add_dependency run glibc