Hi ports --
Attached is a diff to update libmodplug to 0.8.8.4. Noticed when I was
playing with games/solarus/solarus, which depends on it.
This has been run tested with games/solarus/zsdx on amd64 and i386 and
works ok. Builds/installs ok on macppc and loongson. Also build tested
(and ran 'make test' on) all deps on amd64.
OK?
~Brian
Index: Makefile
===================================================================
RCS file: /cvs/ports/audio/libmodplug/Makefile,v
retrieving revision 1.9
diff -u -p -u -p -r1.9 Makefile
--- Makefile 21 Mar 2013 08:45:12 -0000 1.9
+++ Makefile 10 Oct 2013 00:26:52 -0000
@@ -2,13 +2,14 @@
COMMENT = library for decoding mod-like music formats
-DISTNAME = libmodplug-0.8.8.2
-REVISION = 1
+DISTNAME = libmodplug-0.8.8.4
CATEGORIES = audio
HOMEPAGE = http://modplug-xmms.sourceforge.net/
-SHARED_LIBS += modplug 0.0 # .1.0
+MAINTAINER = Brian Callahan <bcal...@openbsd.org>
+
+SHARED_LIBS += modplug 0.1 # .1.0
# Public domain
PERMIT_PACKAGE_CDROM = Yes
@@ -16,7 +17,6 @@ PERMIT_PACKAGE_CDROM = Yes
MASTER_SITES = ${MASTER_SITE_SOURCEFORGE:=modplug-xmms/}
WANTLIB += m stdc++
-
NO_TEST = Yes
Index: distinfo
===================================================================
RCS file: /cvs/ports/audio/libmodplug/distinfo,v
retrieving revision 1.2
diff -u -p -u -p -r1.2 distinfo
--- distinfo 9 Apr 2011 07:43:53 -0000 1.2
+++ distinfo 10 Oct 2013 00:26:52 -0000
@@ -1,5 +1,2 @@
-MD5 (libmodplug-0.8.8.2.tar.gz) = 4fzqxMO8Juvpb2GbRtJv9w==
-RMD160 (libmodplug-0.8.8.2.tar.gz) = XmwcthldCtvWsnAE9qv/QAEzr0g=
-SHA1 (libmodplug-0.8.8.2.tar.gz) = QluwExlCQqxF029UdXTTiD7lJ3A=
-SHA256 (libmodplug-0.8.8.2.tar.gz) =
be33lxP3q3UljAl6h0nauRJ8gWkoWNq1KV7vUE6mFwU=
-SIZE (libmodplug-0.8.8.2.tar.gz) = 517938
+SHA256 (libmodplug-0.8.8.4.tar.gz) =
XF7hPd2+0US+JiduXxAtoX/1scmS8xADiZgwgtoiZPc=
+SIZE (libmodplug-0.8.8.4.tar.gz) = 546319
Index: patches/patch-src_load_abc_cpp
===================================================================
RCS file: patches/patch-src_load_abc_cpp
diff -N patches/patch-src_load_abc_cpp
--- patches/patch-src_load_abc_cpp 5 May 2011 21:25:48 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,21 +0,0 @@
-$OpenBSD: patch-src_load_abc_cpp,v 1.1 2011/05/05 21:25:48 jasper Exp $
-
-Prevent abc_remove_unnecessary_events() from removing the last track.
-From upstream git: d7c36959757fc6c8e4d487be8a72383093d9d26f
-
---- src/load_abc.cpp.orig Fri Mar 25 23:02:07 2011
-+++ src/load_abc.cpp Thu May 5 23:20:40 2011
-@@ -1022,10 +1022,12 @@ static void abc_remove_unnecessary_events(ABCHANDLE *h
- _mm_free(h->trackhandle,tp);
- tp = ptp;
- }
-- else {
-+ else if (tp->next) {
- h->track = tp->next;
- _mm_free(h->trackhandle,tp);
- tp = h->track;
-+ } else {
-+ break;
- }
- }
- ptp = tp; // remember previous track
Index: patches/patch-src_load_ams_cpp
===================================================================
RCS file: patches/patch-src_load_ams_cpp
diff -N patches/patch-src_load_ams_cpp
--- patches/patch-src_load_ams_cpp 18 Aug 2011 17:56:47 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,28 +0,0 @@
-$OpenBSD: patch-src_load_ams_cpp,v 1.1 2011/08/18 17:56:47 jasper Exp $
-
-AMSv2 off by one problem (related to SA45131/C)
-From upstream git: 16d7a78efe14d345a6c5b241f88422ad0ee483ea
-
-Fix AMS and DSM too large by one - SA45131/C
-From upstream git: 26243ab9fe1171f70053e9aec4b20e9f7de9e4ef
-
---- src/load_ams.cpp.orig Thu Aug 18 19:49:58 2011
-+++ src/load_ams.cpp Thu Aug 18 19:52:09 2011
-@@ -52,7 +52,7 @@ BOOL CSoundFile::ReadAMS(LPCBYTE lpStream, DWORD dwMem
-
- if ((!lpStream) || (dwMemLength < 1024)) return FALSE;
- if ((pfh->verhi != 0x01) || (strncmp(pfh->szHeader, "Extreme", 7))
-- || (!pfh->patterns) || (!pfh->orders) || (!pfh->samples) ||
(pfh->samples > MAX_SAMPLES)
-+ || (!pfh->patterns) || (!pfh->orders) || (!pfh->samples) ||
(pfh->samples >= MAX_SAMPLES)
- || (pfh->patterns > MAX_PATTERNS) || (pfh->orders > MAX_ORDERS))
- {
- return ReadAMS2(lpStream, dwMemLength);
-@@ -321,7 +321,7 @@ BOOL CSoundFile::ReadAMS2(LPCBYTE lpStream, DWORD dwMe
- dwMemPos = pfh->titlelen + 8;
- psh = (AMS2SONGHEADER *)(lpStream + dwMemPos);
- if (((psh->version & 0xFF00) != 0x0200) || (!psh->instruments)
-- || (psh->instruments > MAX_INSTRUMENTS) || (!psh->patterns) ||
(!psh->orders)) return FALSE;
-+ || (psh->instruments >= MAX_INSTRUMENTS) || (!psh->patterns) ||
(!psh->orders)) return FALSE;
- dwMemPos += sizeof(AMS2SONGHEADER);
- if (pfh->titlelen)
- {
Index: patches/patch-src_load_dsm_cpp
===================================================================
RCS file: patches/patch-src_load_dsm_cpp
diff -N patches/patch-src_load_dsm_cpp
--- patches/patch-src_load_dsm_cpp 18 Aug 2011 17:56:47 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,16 +0,0 @@
-$OpenBSD: patch-src_load_dsm_cpp,v 1.1 2011/08/18 17:56:47 jasper Exp $
-
-Fix AMS and DSM too large by one - SA45131/C
-From upstream git: 26243ab9fe1171f70053e9aec4b20e9f7de9e4ef
-
---- src/load_dsm.cpp.orig Thu Aug 18 19:49:21 2011
-+++ src/load_dsm.cpp Thu Aug 18 19:49:47 2011
-@@ -101,7 +101,7 @@ BOOL CSoundFile::ReadDSM(LPCBYTE lpStream, DWORD dwMem
- if (m_nChannels < 4) m_nChannels = 4;
- if (m_nChannels > 16) m_nChannels = 16;
- m_nSamples = psong->numsmp;
-- if (m_nSamples > MAX_SAMPLES) m_nSamples = MAX_SAMPLES;
-+ if (m_nSamples >= MAX_SAMPLES) m_nSamples = MAX_SAMPLES - 1;
- m_nDefaultSpeed = psong->speed;
- m_nDefaultTempo = psong->bpm;
- m_nDefaultGlobalVolume = psong->globalvol << 2;
Index: patches/patch-src_load_it_cpp
===================================================================
RCS file: patches/patch-src_load_it_cpp
diff -N patches/patch-src_load_it_cpp
--- patches/patch-src_load_it_cpp 5 May 2011 21:25:48 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,57 +0,0 @@
-$OpenBSD: patch-src_load_it_cpp,v 1.1 2011/05/05 21:25:48 jasper Exp $
-
-Fixed various possible integer overflows in CSoundFile::ReadIT().
-From upstream git: 89dd2ff3f4463a5c657767cee81fa62dff7f70eb
-
---- src/load_it.cpp.orig Sun May 10 05:05:27 2009
-+++ src/load_it.cpp Thu May 5 23:19:10 2011
-@@ -216,7 +216,7 @@ BOOL CSoundFile::ReadIT(const BYTE *lpStream, DWORD dw
- }
- if (m_nChannels < 4) m_nChannels = 4;
- // Reading Song Message
-- if ((pifh.special & 0x01) && (pifh.msglength) && (pifh.msgoffset +
pifh.msglength < dwMemLength))
-+ if ((pifh.special & 0x01) && (pifh.msglength) && (pifh.msglength <=
dwMemLength) && (pifh.msgoffset < dwMemLength - pifh.msglength))
- {
- m_lpszSongComments = new char[pifh.msglength+1];
- if (m_lpszSongComments)
-@@ -325,11 +325,11 @@ BOOL CSoundFile::ReadIT(const BYTE *lpStream, DWORD dw
- for (UINT patchk=0; patchk<npatterns; patchk++)
- {
- memset(chnmask, 0, sizeof(chnmask));
-- if ((!patpos[patchk]) || ((DWORD)patpos[patchk] + 4 >=
dwMemLength)) continue;
-+ if ((!patpos[patchk]) || ((DWORD)patpos[patchk] >= dwMemLength
- 4)) continue;
- UINT len = bswapLE16(*((WORD *)(lpStream+patpos[patchk])));
- UINT rows = bswapLE16(*((WORD *)(lpStream+patpos[patchk]+2)));
- if ((rows < 4) || (rows > 256)) continue;
-- if (patpos[patchk]+8+len > dwMemLength) continue;
-+ if (8+len > dwMemLength || patpos[patchk] > dwMemLength -
(8+len)) continue;
- UINT i = 0;
- const BYTE *p = lpStream+patpos[patchk]+8;
- UINT nrow = 0;
-@@ -383,7 +383,7 @@ BOOL CSoundFile::ReadIT(const BYTE *lpStream, DWORD dw
- // Reading Samples
- m_nSamples = pifh.smpnum;
- if (m_nSamples >= MAX_SAMPLES) m_nSamples = MAX_SAMPLES-1;
-- for (UINT nsmp=0; nsmp<pifh.smpnum; nsmp++) if ((smppos[nsmp]) &&
(smppos[nsmp] + sizeof(ITSAMPLESTRUCT) <= dwMemLength))
-+ for (UINT nsmp=0; nsmp<pifh.smpnum; nsmp++) if ((smppos[nsmp]) &&
(smppos[nsmp] <= dwMemLength - sizeof(ITSAMPLESTRUCT)))
- {
- ITSAMPLESTRUCT pis = *(ITSAMPLESTRUCT *)(lpStream+smppos[nsmp]);
- pis.id = bswapLE32(pis.id);
-@@ -450,7 +450,7 @@ BOOL CSoundFile::ReadIT(const BYTE *lpStream, DWORD dw
- // Reading Patterns
- for (UINT npat=0; npat<npatterns; npat++)
- {
-- if ((!patpos[npat]) || ((DWORD)patpos[npat] + 4 >= dwMemLength))
-+ if ((!patpos[npat]) || ((DWORD)patpos[npat] >= dwMemLength - 4))
- {
- PatternSize[npat] = 64;
- Patterns[npat] = AllocatePattern(64, m_nChannels);
-@@ -460,7 +460,7 @@ BOOL CSoundFile::ReadIT(const BYTE *lpStream, DWORD dw
- UINT len = bswapLE16(*((WORD *)(lpStream+patpos[npat])));
- UINT rows = bswapLE16(*((WORD *)(lpStream+patpos[npat]+2)));
- if ((rows < 4) || (rows > 256)) continue;
-- if (patpos[npat]+8+len > dwMemLength) continue;
-+ if (8+len > dwMemLength || patpos[npat] > dwMemLength -
(8+len)) continue;
- PatternSize[npat] = rows;
- if ((Patterns[npat] = AllocatePattern(rows, m_nChannels)) ==
NULL) continue;
- memset(lastvalue, 0, sizeof(lastvalue));
Index: patches/patch-src_load_med_cpp
===================================================================
RCS file: patches/patch-src_load_med_cpp
diff -N patches/patch-src_load_med_cpp
--- patches/patch-src_load_med_cpp 5 May 2011 21:25:48 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,34 +0,0 @@
-$OpenBSD: patch-src_load_med_cpp,v 1.1 2011/05/05 21:25:48 jasper Exp $
-
-Fixed various possible integer overflows in CSoundFile::ReadMed()
-From upstream git: ce87da55599421e851a5b13492b753defba17349
-
---- src/load_med.cpp.orig Mon May 11 10:21:30 2009
-+++ src/load_med.cpp Thu May 5 23:21:15 2011
-@@ -664,7 +664,7 @@ BOOL CSoundFile::ReadMed(const BYTE *lpStream, DWORD d
- const MMD2PLAYSEQ *pmps = (MMD2PLAYSEQ
*)(lpStream + pseq);
- if (!m_szNames[0][0]) memcpy(m_szNames[0],
pmps->name, 31);
- UINT n = bswapBE16(pmps->length);
-- if (pseq+n <= dwMemLength)
-+ if (n < (dwMemLength - (pseq + sizeof(*pmps)) +
sizeof(pmps->seq)) / sizeof(pmps->seq[0]))
- {
- for (UINT i=0; i<n; i++)
- {
-@@ -745,7 +745,7 @@ BOOL CSoundFile::ReadMed(const BYTE *lpStream, DWORD d
- DWORD trktagofs = bswapBE32(ptrktags[i]);
- if (trktagofs)
- {
-- while (trktagofs+8 < dwMemLength)
-+ while (trktagofs < dwMemLength - 8)
- {
- DWORD ntag = bswapBE32(*(DWORD
*)(lpStream + trktagofs));
- if (ntag == MMDTAG_END) break;
-@@ -758,7 +758,7 @@ BOOL CSoundFile::ReadMed(const BYTE *lpStream, DWORD d
- trktagofs += 8;
- }
- if (trknamelen > MAX_CHANNELNAME)
trknamelen = MAX_CHANNELNAME;
-- if ((trknameofs) && (trknameofs +
trknamelen < dwMemLength))
-+ if ((trknameofs) && (trknamelen <
dwMemLength) && (trknameofs < dwMemLength - trknamelen))
- {
- lstrcpyn(ChnSettings[i].szName,
(LPCSTR)(lpStream+trknameofs), MAX_CHANNELNAME);
-
ChnSettings[i].szName[MAX_CHANNELNAME-1] = '\0';
Index: patches/patch-src_load_s3m_cpp
===================================================================
RCS file: patches/patch-src_load_s3m_cpp
diff -N patches/patch-src_load_s3m_cpp
--- patches/patch-src_load_s3m_cpp 18 Aug 2011 17:56:48 -0000 1.3
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,50 +0,0 @@
-$OpenBSD: patch-src_load_s3m_cpp,v 1.3 2011/08/18 17:56:48 jasper Exp $
-
-Fix S3M stack overflows SA45131/B
-From upstream git: f4e5295658fff000379caa122e75c9200205fe20
-
-Fixed a potential memory overread in CSoundFile::ReadS3M()
-From upstream git: 537e9fd5b95cf6c448e9bd2ea2973e8b139bce00
-
---- src/load_s3m.cpp.orig Fri Mar 25 23:17:18 2011
-+++ src/load_s3m.cpp Thu Aug 18 19:47:06 2011
-@@ -187,11 +187,11 @@ BOOL CSoundFile::ReadS3M(const BYTE *lpStream, DWORD d
- //---------------------------------------------------------------
- {
- UINT insnum,patnum,nins,npat;
-- DWORD insfile[128];
-+ DWORD insfile[MAX_SAMPLES];
- WORD ptr[256];
- BYTE s[1024];
- DWORD dwMemPos;
-- BYTE insflags[128], inspack[128];
-+ BYTE insflags[MAX_SAMPLES], inspack[MAX_SAMPLES];
- S3MFILEHEADER psfh = *(S3MFILEHEADER *)lpStream;
-
- psfh.reserved1 = bswapLE16(psfh.reserved1);
-@@ -315,7 +315,14 @@ BOOL CSoundFile::ReadS3M(const BYTE *lpStream, DWORD d
- Ins[iSmp].nC4Speed = j;
- insfile[iSmp] = ((DWORD)bswapLE16(*((LPWORD)(s+0x0E))))
<< 4;
- insfile[iSmp] += ((DWORD)(BYTE)s[0x0D]) << 20;
-- if (insfile[iSmp] > dwMemLength) insfile[iSmp] &=
0xFFFF;
-+ // offset is invalid - ignore this sample.
-+ if (insfile[iSmp] > dwMemLength) insfile[iSmp] = 0;
-+ else if (insfile[iSmp]) {
-+ // ignore duplicate samples.
-+ for (int z=iSmp-1; z>=0; z--)
-+ if (insfile[iSmp] == insfile[z])
-+ insfile[iSmp] = 0;
-+ }
- if ((Ins[iSmp].nLoopStart >= Ins[iSmp].nLoopEnd) ||
(Ins[iSmp].nLoopEnd - Ins[iSmp].nLoopStart < 8))
- Ins[iSmp].nLoopStart = Ins[iSmp].nLoopEnd = 0;
- Ins[iSmp].nPan = 0x80;
-@@ -393,7 +400,8 @@ BOOL CSoundFile::ReadS3M(const BYTE *lpStream, DWORD d
- if (insflags[iRaw-1] & 2) flags |= RSF_STEREO;
- if (inspack[iRaw-1] == 4) flags = RS_ADPCM4;
- dwMemPos = insfile[iRaw];
-- dwMemPos += ReadSample(&Ins[iRaw], flags, (LPSTR)(lpStream +
dwMemPos), dwMemLength - dwMemPos);
-+ if (dwMemPos < dwMemLength)
-+ dwMemPos += ReadSample(&Ins[iRaw], flags,
(LPSTR)(lpStream + dwMemPos), dwMemLength - dwMemPos);
- }
- m_nMinPeriod = 64;
- m_nMaxPeriod = 32767;
Index: patches/patch-src_load_wav_cpp
===================================================================
RCS file: patches/patch-src_load_wav_cpp
diff -N patches/patch-src_load_wav_cpp
--- patches/patch-src_load_wav_cpp 18 Aug 2011 17:56:48 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,16 +0,0 @@
-$OpenBSD: patch-src_load_wav_cpp,v 1.1 2011/08/18 17:56:48 jasper Exp $
-
-Fix integer overflow (SA45131/A)
-From upstream git: 2d4c56de314ab13e4437bd8b609f0b751066eee8
-
---- src/load_wav.cpp.orig Thu Aug 18 19:37:38 2011
-+++ src/load_wav.cpp Thu Aug 18 19:37:57 2011
-@@ -54,7 +54,7 @@ BOOL CSoundFile::ReadWav(const BYTE *lpStream, DWORD d
- if ((Patterns[1] = AllocatePattern(64, 4)) == NULL) return TRUE;
- UINT samplesize = (pfmt->channels * pfmt->bitspersample) >> 3;
- UINT len = pdata->length, bytelen;
-- if (dwMemPos + len > dwMemLength - 8) len = dwMemLength - dwMemPos - 8;
-+ if (len > dwMemLength - 8 - dwMemPos) len = dwMemLength - dwMemPos - 8;
- len /= samplesize;
- bytelen = len;
- if (pfmt->bitspersample >= 16) bytelen *= 2;
Index: patches/patch-src_sndfile_cpp
===================================================================
RCS file: patches/patch-src_sndfile_cpp
diff -N patches/patch-src_sndfile_cpp
--- patches/patch-src_sndfile_cpp 5 May 2011 21:25:48 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,17 +0,0 @@
-$OpenBSD: patch-src_sndfile_cpp,v 1.1 2011/05/05 21:25:48 jasper Exp $
-
-Fixed possible memory overread in CSoundFile::AdjustSampleLoop().
-From upstream git: fda0caf6490bb76cba349ae3e198b0d11d35c7c0
-
---- src/sndfile.cpp.orig Fri Mar 25 23:02:07 2011
-+++ src/sndfile.cpp Thu May 5 23:22:01 2011
-@@ -1550,7 +1550,9 @@ void CSoundFile::AdjustSampleLoop(MODINSTRUMENT *pIns)
- //----------------------------------------------------
- {
- if (!pIns->pSample) return;
-+ if (pIns->nLength > MAX_SAMPLE_LENGTH) pIns->nLength =
MAX_SAMPLE_LENGTH;
- if (pIns->nLoopEnd > pIns->nLength) pIns->nLoopEnd = pIns->nLength;
-+ if (pIns->nLoopStart > pIns->nLength+2) pIns->nLoopStart =
pIns->nLength+2;
- if (pIns->nLoopStart+2 >= pIns->nLoopEnd)
- {
- pIns->nLoopStart = pIns->nLoopEnd = 0;
Index: pkg/PFRAG.shared
===================================================================
RCS file: pkg/PFRAG.shared
diff -N pkg/PFRAG.shared
--- pkg/PFRAG.shared 7 Nov 2010 00:44:09 -0000 1.1.1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,2 +0,0 @@
-@comment $OpenBSD: PFRAG.shared,v 1.1.1.1 2010/11/07 00:44:09 jeremy Exp $
-@lib lib/libmodplug.so.${LIBmodplug_VERSION}
Index: pkg/PLIST
===================================================================
RCS file: /cvs/ports/audio/libmodplug/pkg/PLIST,v
retrieving revision 1.1.1.1
diff -u -p -u -p -r1.1.1.1 PLIST
--- pkg/PLIST 7 Nov 2010 00:44:09 -0000 1.1.1.1
+++ pkg/PLIST 10 Oct 2013 00:26:52 -0000
@@ -1,5 +1,4 @@
@comment $OpenBSD: PLIST,v 1.1.1.1 2010/11/07 00:44:09 jeremy Exp $
-%%SHARED%%
include/libmodplug/
include/libmodplug/it_defs.h
include/libmodplug/modplug.h
@@ -7,5 +6,6 @@ include/libmodplug/sndfile.h
include/libmodplug/stdafx.h
lib/libmodplug.a
lib/libmodplug.la
+@lib lib/libmodplug.so.${LIBmodplug_VERSION}
lib/pkgconfig/
lib/pkgconfig/libmodplug.pc