Date: Friday, November 20, 2009 @ 20:07:12
  Author: allan
Revision: 59170

upgpkg: libmikmod 3.1.12-3
    use patchset from SDL_mixer

Added:
  libmikmod/trunk/libmikmod-3.1.12-64bit-fix.diff
  libmikmod/trunk/libmikmod-3.1.12-exitcrash-fix.diff
  libmikmod/trunk/libmikmod-3.1.12-loopingvolume-fix.diff
  libmikmod/trunk/libmikmod-3.1.12-md_sngchn-fix.diff
  libmikmod/trunk/libmikmod-CVE-2009-0179.patch
Modified:
  libmikmod/trunk/PKGBUILD
Deleted:
  libmikmod/trunk/libmikmod-CVE-2007-6720.patch

-----------------------------------------+
 PKGBUILD                                |   26 +++++-
 libmikmod-3.1.12-64bit-fix.diff         |   47 ++++++++++++
 libmikmod-3.1.12-exitcrash-fix.diff     |   21 +++++
 libmikmod-3.1.12-loopingvolume-fix.diff |   15 ++++
 libmikmod-3.1.12-md_sngchn-fix.diff     |  112 ++++++++++++++++++++++++++++++
 libmikmod-CVE-2007-6720.patch           |   39 ----------
 libmikmod-CVE-2009-0179.patch           |   33 ++++++++
 7 files changed, 247 insertions(+), 46 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD    2009-11-20 17:44:19 UTC (rev 59169)
+++ PKGBUILD    2009-11-21 01:07:12 UTC (rev 59170)
@@ -4,7 +4,7 @@
 
 pkgname=libmikmod
 pkgver=3.1.12
-pkgrel=2
+pkgrel=3
 pkgdesc="A portable sound library"
 license=('GPL' 'LGPL')
 url="http://sourceforge.net/projects/mikmod/";
@@ -13,18 +13,30 @@
 options=('!libtool')
 install=$pkgname.install
 source=(http://downloads.sourceforge.net/mikmod/${pkgname}-${pkgver}.tar.gz
-        libmikmod-CVE-2007-6720.patch)
+        libmikmod-3.1.12-64bit-fix.diff
+       libmikmod-3.1.12-exitcrash-fix.diff
+       libmikmod-3.1.12-loopingvolume-fix.diff
+       libmikmod-3.1.12-md_sngchn-fix.diff
+        libmikmod-CVE-2009-0179.patch)
 md5sums=('9f3c740298260d5f88981fc0d51f6f16'
-         '0c1c21b3d04bfe0b917b60ad11b00e57')
+         'dc7ffd8d6d355e9d6ec671b7f2b2adc7'
+         '03a4f5bfcecddf5f515672d6d477b7f7'
+         'a837fd876cbd2ac27419b802504489db'
+         '076d39de19de36b880ed90297f1ee0d1'
+         'fa91f4bc17164be32bec0ea7a73f2aaa')
 
 build() {
   cd $srcdir/$pkgname-$pkgver
-  patch -Np1 -i $srcdir/libmikmod-CVE-2007-6720.patch
+
+  # patches from sdl_mixer-1.2.11 source
+  patch -Np1 -i $srcdir/libmikmod-3.1.12-64bit-fix.diff
+  patch -Np1 -i $srcdir/libmikmod-3.1.12-exitcrash-fix.diff
+  patch -Np1 -i $srcdir/libmikmod-3.1.12-loopingvolume-fix.diff
+  patch -Np1 -i $srcdir/libmikmod-3.1.12-md_sngchn-fix.diff
+  patch -Np1 -i $srcdir/libmikmod-CVE-2009-0179.patch
+  
   ./configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info
   make || return 1
   make DESTDIR=$pkgdir install
-
-  rm $pkgdir/usr/share/info/dir
-  gzip -9 $pkgdir/usr/share/info/mikmod.info
 }
 

Added: libmikmod-3.1.12-64bit-fix.diff
===================================================================
--- libmikmod-3.1.12-64bit-fix.diff                             (rev 0)
+++ libmikmod-3.1.12-64bit-fix.diff     2009-11-21 01:07:12 UTC (rev 59170)
@@ -0,0 +1,47 @@
+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?
+
+diff -ru libmikmod-3.1.12.orig/include/mikmod.h.in 
libmikmod-3.1.12/include/mikmod.h.in
+--- libmikmod-3.1.12.orig/include/mikmod.h.in  2007-12-15 01:24:19.000000000 
-0800
++++ libmikmod-3.1.12/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 */
+diff -ru libmikmod-3.1.12.orig/include/mikmod_internals.h 
libmikmod-3.1.12/include/mikmod_internals.h
+--- libmikmod-3.1.12.orig/include/mikmod_internals.h   2007-12-15 
04:24:51.000000000 -0800
++++ libmikmod-3.1.12/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__)

Added: libmikmod-3.1.12-exitcrash-fix.diff
===================================================================
--- libmikmod-3.1.12-exitcrash-fix.diff                         (rev 0)
+++ libmikmod-3.1.12-exitcrash-fix.diff 2009-11-21 01:07:12 UTC (rev 59170)
@@ -0,0 +1,21 @@
+Date: 15 Apr 2002 11:01:19 +0200
+From: Guillaume Cottenceau <[email protected]>
+
+Unfortunately, I should have double checked that the following
+fix (authored by Dave Goehrig <[email protected]>, 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.
+
+diff -ru libmikmod-3.1.12.orig/playercode/virtch_common.c 
libmikmod-3.1.12/playercode/virtch_common.c
+--- libmikmod-3.1.12.orig/playercode/virtch_common.c   2007-12-15 
01:26:53.000000000 -0800
++++ libmikmod-3.1.12/playercode/virtch_common.c        2009-10-05 
00:37:12.000000000 -0700
+@@ -347,7 +347,7 @@
+ 
+ void VC1_SampleUnload(SWORD handle)
+ {
+-      if (handle<MAXSAMPLEHANDLES) {
++      if (Samples && handle<MAXSAMPLEHANDLES) {
+               if (Samples[handle])
+                       free(Samples[handle]);
+               Samples[handle]=NULL;

Added: libmikmod-3.1.12-loopingvolume-fix.diff
===================================================================
--- libmikmod-3.1.12-loopingvolume-fix.diff                             (rev 0)
+++ libmikmod-3.1.12-loopingvolume-fix.diff     2009-11-21 01:07:12 UTC (rev 
59170)
@@ -0,0 +1,15 @@
+Yi-Huang Han - Wed Oct 24 21:55:47 PDT 2001
+ * Fixed MOD music volume when looping
+
+diff -ru libmikmod-3.1.12.orig/playercode/mplayer.c 
libmikmod-3.1.12/playercode/mplayer.c
+--- libmikmod-3.1.12.orig/playercode/mplayer.c 2009-10-05 00:19:59.000000000 
-0700
++++ libmikmod-3.1.12/playercode/mplayer.c      2009-10-05 00:44:35.000000000 
-0700
+@@ -3019,7 +3019,7 @@
+ {
+       MUTEX_LOCK(vars);
+       if (pf)
+-              pf->volume=(volume<0)?0:(volume>128)?128:volume;
++              pf->volume=pf->initvolume=(volume<0)?0:(volume>128)?128:volume;
+       MUTEX_UNLOCK(vars);
+ }
+ 

Added: libmikmod-3.1.12-md_sngchn-fix.diff
===================================================================
--- libmikmod-3.1.12-md_sngchn-fix.diff                         (rev 0)
+++ libmikmod-3.1.12-md_sngchn-fix.diff 2009-11-21 01:07:12 UTC (rev 59170)
@@ -0,0 +1,112 @@
+This patch fixes "buffer overflow due to md_numchn - ID: 1630158"
+
+diff -ru libmikmod-3.1.12.orig/playercode/mplayer.c 
libmikmod-3.1.12/playercode/mplayer.c
+--- libmikmod-3.1.12.orig/playercode/mplayer.c 2007-12-15 01:26:28.000000000 
-0800
++++ libmikmod-3.1.12/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;t<md_sngchn;t++)
++      for (t=0;t<NUMVOICES(mod);t++)
+               if (((mod->voice[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;k<md_sngchn;k++,a++) {
++      for (k=0;k<NUMVOICES(mod);k++,a++) {
+               /* allow us to take over a nonexisting sample */
+               if (!a->main.s)
+                       return k;
+@@ -2249,12 +2251,12 @@
+ 
+       switch (dat) {
+       case 0x0: /* past note cut */
+-              for (t=0;t<md_sngchn;t++)
++              for (t=0;t<NUMVOICES(mod);t++)
+                       if (mod->voice[t].master==a)
+                               mod->voice[t].main.fadevol=0;
+               break;
+       case 0x1: /* past note off */
+-              for (t=0;t<md_sngchn;t++)
++              for (t=0;t<NUMVOICES(mod);t++)
+                       if (mod->voice[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;t<md_sngchn;t++)
++              for (t=0;t<NUMVOICES(mod);t++)
+                       if (mod->voice[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;channel<md_sngchn;channel++) {
++      for (channel=0;channel<NUMVOICES(mod);channel++) {
+               aout=&mod->voice[channel];
+               i=aout->main.i;
+               s=aout->main.s;
+@@ -2736,7 +2738,7 @@
+                       if (a->dct!=DCT_OFF) {
+                               int t;
+ 
+-                              for (t=0;t<md_sngchn;t++)
++                              for (t=0;t<NUMVOICES(mod);t++)
+                                       if ((!Voice_Stopped_internal(t))&&
+                                          (mod->voice[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;t<md_sngchn;t++) {
++              for (t=0;t<NUMVOICES(pf);t++) {
+                       Voice_Stop_internal(t);
+                       pf->voice[t].main.i=NULL;
+                       pf->voice[t].main.s=NULL;
+@@ -3111,7 +3118,7 @@
+               pf->patbrk=0;
+               pf->vbtick=pf->sngspd;
+ 
+-              for (t=0;t<md_sngchn;t++) {
++              for (t=0;t<NUMVOICES(pf);t++) {
+                       Voice_Stop_internal(t);
+                       pf->voice[t].main.i=NULL;
+                       pf->voice[t].main.s=NULL;
+@@ -3138,7 +3145,7 @@
+               pf->sngpos=pos;
+               pf->vbtick=pf->sngspd;
+ 
+-              for (t=0;t<md_sngchn;t++) {
++              for (t=0;t<NUMVOICES(pf);t++) {
+                       Voice_Stop_internal(t);
+                       pf->voice[t].main.i=NULL;
+                       pf->voice[t].main.s=NULL;

Deleted: libmikmod-CVE-2007-6720.patch
===================================================================
--- libmikmod-CVE-2007-6720.patch       2009-11-20 17:44:19 UTC (rev 59169)
+++ libmikmod-CVE-2007-6720.patch       2009-11-21 01:07:12 UTC (rev 59170)
@@ -1,39 +0,0 @@
-diff -Naur libmikmod-3.1.12-old/playercode/mplayer.c 
libmikmod-3.1.12/playercode/mplayer.c
---- libmikmod-3.1.12-old/playercode/mplayer.c  2007-12-15 19:26:28.000000000 
+1000
-+++ libmikmod-3.1.12/playercode/mplayer.c      2009-01-21 18:53:59.000000000 
+1000
-@@ -2318,7 +2318,7 @@
-       SAMPLE *s;
- 
-       mod->totalchn=mod->realchn=0;
--      for (channel=0;channel<md_sngchn;channel++) {
-+      for (channel=0;channel<pf->numchn;channel++) {
-               aout=&mod->voice[channel];
-               i=aout->main.i;
-               s=aout->main.s;
-@@ -3086,7 +3086,7 @@
-               pf->patbrk=0;
-               pf->vbtick=pf->sngspd;
- 
--              for (t=0;t<md_sngchn;t++) {
-+              for (t=0;t<pf->numchn;t++) {
-                       Voice_Stop_internal(t);
-                       pf->voice[t].main.i=NULL;
-                       pf->voice[t].main.s=NULL;
-@@ -3111,7 +3111,7 @@
-               pf->patbrk=0;
-               pf->vbtick=pf->sngspd;
- 
--              for (t=0;t<md_sngchn;t++) {
-+              for (t=0;t<pf->numchn;t++) {
-                       Voice_Stop_internal(t);
-                       pf->voice[t].main.i=NULL;
-                       pf->voice[t].main.s=NULL;
-@@ -3138,7 +3138,7 @@
-               pf->sngpos=pos;
-               pf->vbtick=pf->sngspd;
- 
--              for (t=0;t<md_sngchn;t++) {
-+              for (t=0;t<pf->numchn;t++) {
-                       Voice_Stop_internal(t);
-                       pf->voice[t].main.i=NULL;
-                       pf->voice[t].main.s=NULL;

Added: libmikmod-CVE-2009-0179.patch
===================================================================
--- libmikmod-CVE-2009-0179.patch                               (rev 0)
+++ libmikmod-CVE-2009-0179.patch       2009-11-21 01:07:12 UTC (rev 59170)
@@ -0,0 +1,33 @@
+diff -ur libmikmod-3.1.11.orig/loaders/load_xm.c 
libmikmod-3.1.11/loaders/load_xm.c
+--- libmikmod-3.1.11.orig/loaders/load_xm.c    2004-01-21 18:43:53.000000000 
+0100
++++ libmikmod-3.1.11/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 || 
t<of.numins-1)) {
+                                       free(nextwav);free(wh);
+                                       nextwav=NULL;wh=NULL;
+                                       _mm_errno = MMERR_LOADING_SAMPLEINFO;
+diff -ur libmikmod-3.1.11.orig/playercode/mloader.c 
libmikmod-3.1.11/playercode/mloader.c
+--- libmikmod-3.1.11.orig/playercode/mloader.c 2004-01-21 18:43:53.000000000 
+0100
++++ libmikmod-3.1.11/playercode/mloader.c      2008-04-16 04:30:45.000000000 
+0200
+@@ -450,10 +450,12 @@
+       if (!l->Init || 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;
+ 

Reply via email to