aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTAKATSU Tomonari <tota@FreeBSD.org>2011-01-04 00:47:34 +0000
committerTAKATSU Tomonari <tota@FreeBSD.org>2011-01-04 00:47:34 +0000
commit4f3cb1084ad3ede4cdda3c0ebf789ac798200c7b (patch)
treef4cc68cb27229ae6f4822e68a43bf608c5def050
parent018df805ac83869f5098a616e55b90e44ffff61c (diff)
downloadports-4f3cb1084ad3ede4cdda3c0ebf789ac798200c7b.tar.gz
ports-4f3cb1084ad3ede4cdda3c0ebf789ac798200c7b.zip
Notes
-rw-r--r--audio/libmikmod/Makefile11
-rw-r--r--audio/libmikmod/distinfo8
-rw-r--r--audio/libmikmod/files/patch-64bit-fix24
-rw-r--r--audio/libmikmod/files/patch-CVE-2009-017933
-rw-r--r--audio/libmikmod/files/patch-ad32
-rw-r--r--audio/libmikmod/files/patch-exitcrash12
-rw-r--r--audio/libmikmod/files/patch-md_sngchn110
-rw-r--r--audio/libmikmod/files/patch-ngvolume12
8 files changed, 196 insertions, 46 deletions
diff --git a/audio/libmikmod/Makefile b/audio/libmikmod/Makefile
index fbb5a35c0a35..b05d6cb3eebc 100644
--- a/audio/libmikmod/Makefile
+++ b/audio/libmikmod/Makefile
@@ -6,16 +6,11 @@
#
PORTNAME= libmikmod
-PORTVERSION= 3.1.11
-PORTREVISION= 2
+PORTVERSION= 3.1.12
CATEGORIES= audio
-MASTER_SITES= http://mikmod.raphnet.net/files/
+MASTER_SITES= SF/mikmod/libmikmod%20%28source%29/${PORTVERSION}/
-PATCH_SITES= http://mikmod.raphnet.net/files/
-PATCHFILES= libmikmod-3.1.11-a.diff
-PATCH_DIST_STRIP= -p1
-
-MAINTAINER= ports@FreeBSD.org
+MAINTAINER= neuroworker@gmail.com
COMMENT= MikMod Sound Library
USE_AUTOTOOLS= libtool
diff --git a/audio/libmikmod/distinfo b/audio/libmikmod/distinfo
index aac4013b7d21..bf3b72d07001 100644
--- a/audio/libmikmod/distinfo
+++ b/audio/libmikmod/distinfo
@@ -1,6 +1,2 @@
-MD5 (libmikmod-3.1.11.tar.gz) = 705106da305e8de191549f1e7393185c
-SHA256 (libmikmod-3.1.11.tar.gz) = 2d7598cd2a8c61c023f27c9c7c1aca8bbfd92aadbee2f98b7a6d421eae35c929
-SIZE (libmikmod-3.1.11.tar.gz) = 611590
-MD5 (libmikmod-3.1.11-a.diff) = 5e56be5a32eecf3cfa195379a5ecb0ef
-SHA256 (libmikmod-3.1.11-a.diff) = 4d546e905fd9f93da02701fc813f557f79b17084dc1f9ba5626475f4577eedbc
-SIZE (libmikmod-3.1.11-a.diff) = 67970
+SHA256 (libmikmod-3.1.12.tar.gz) = 891a2b780306e6ef86e381f459e71a085d4e7f56c970a879d3bf341c01bdfc32
+SIZE (libmikmod-3.1.12.tar.gz) = 618011
diff --git a/audio/libmikmod/files/patch-64bit-fix b/audio/libmikmod/files/patch-64bit-fix
new file mode 100644
index 000000000000..0cf716a8d983
--- /dev/null
+++ b/audio/libmikmod/files/patch-64bit-fix
@@ -0,0 +1,24 @@
+diff -ru include/mikmod.h.in libmikmod-3.1.12/include/mikmod.h.in
+--- 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 */
+diff -ru include/mikmod_internals.h libmikmod-3.1.12/include/mikmod_internals.h
+--- 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/audio/libmikmod/files/patch-CVE-2009-0179 b/audio/libmikmod/files/patch-CVE-2009-0179
new file mode 100644
index 000000000000..7833e3b9601a
--- /dev/null
+++ b/audio/libmikmod/files/patch-CVE-2009-0179
@@ -0,0 +1,33 @@
+diff -ur loaders/load_xm.c libmikmod-3.1.11/loaders/load_xm.c
+--- 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 || t<of.numins-1)) {
+ free(nextwav);free(wh);
+ nextwav=NULL;wh=NULL;
+ _mm_errno = MMERR_LOADING_SAMPLEINFO;
+diff -ur playercode/mloader.c libmikmod-3.1.11/playercode/mloader.c
+--- playercode/mloader.c 2004-01-21 18:43:53.000000000 +0100
++++ 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;
+
diff --git a/audio/libmikmod/files/patch-ad b/audio/libmikmod/files/patch-ad
deleted file mode 100644
index aa92fd2ec7d8..000000000000
--- a/audio/libmikmod/files/patch-ad
+++ /dev/null
@@ -1,32 +0,0 @@
---- drivers/drv_raw.c 2000/05/26 10:10:11 1.1
-+++ drivers/drv_raw.c 2000/05/26 10:11:48
-@@ -58,6 +58,7 @@
- static int rawout=-1;
- static SBYTE *audiobuffer=NULL;
- static CHAR *filename=NULL;
-+static unsigned long counter=0;
-
- static void RAW_CommandLine(CHAR *cmdline)
- {
-@@ -113,13 +114,20 @@
- if (rawout!=-1) {
- close(rawout);
- rawout=-1;
-+ if (counter==0)
-+ unlink(filename?filename:FILENAME);
-+ else
-+ counter=0;
- }
- _mm_free(audiobuffer);
- }
-
- static void RAW_Update(void)
- {
-- write(rawout,audiobuffer,VC_WriteBytes(audiobuffer,BUFFERSIZE));
-+ int num;
-+ num=write(rawout,audiobuffer,VC_WriteBytes(audiobuffer,BUFFERSIZE));
-+ if (num>0)
-+ counter+=num;
- }
-
- static BOOL RAW_Reset(void)
diff --git a/audio/libmikmod/files/patch-exitcrash b/audio/libmikmod/files/patch-exitcrash
new file mode 100644
index 000000000000..f9a43a27ddb1
--- /dev/null
+++ b/audio/libmikmod/files/patch-exitcrash
@@ -0,0 +1,12 @@
+diff -ru playercode/virtch_common.c libmikmod-3.1.12/playercode/virtch_common.c
+--- 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 (handle<MAXSAMPLEHANDLES) {
++ if (Samples && handle<MAXSAMPLEHANDLES) {
+ if (Samples[handle])
+ free(Samples[handle]);
+ Samples[handle]=NULL;
diff --git a/audio/libmikmod/files/patch-md_sngchn b/audio/libmikmod/files/patch-md_sngchn
new file mode 100644
index 000000000000..12e0f2893a45
--- /dev/null
+++ b/audio/libmikmod/files/patch-md_sngchn
@@ -0,0 +1,110 @@
+diff -ru playercode/mplayer.c libmikmod-3.1.12/playercode/mplayer.c
+--- 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;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;
diff --git a/audio/libmikmod/files/patch-ngvolume b/audio/libmikmod/files/patch-ngvolume
new file mode 100644
index 000000000000..2931abfe56ef
--- /dev/null
+++ b/audio/libmikmod/files/patch-ngvolume
@@ -0,0 +1,12 @@
+diff -ru playercode/mplayer.c libmikmod-3.1.12/playercode/mplayer.c
+--- playercode/mplayer.c 2009-10-05 00:19:59.000000000 -0700
++++ 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);
+ }
+