Accepting request 27748 from multimedia:libs

Copy from multimedia:libs/libmikmod based on submit request 27748 from user tiwai

OBS-URL: https://build.opensuse.org/request/show/27748
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/libmikmod?expand=0&rev=12
This commit is contained in:
OBS User autobuild 2009-12-29 23:25:54 +00:00 committed by Git OBS Bridge
parent 11db65cc66
commit dfdc7a3091
14 changed files with 264 additions and 2004 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c7f33640c494a61ce53c3547f6b29f3e90e07b14262edc7a9529f17e7e6ec282
size 483860

View File

@ -0,0 +1,49 @@
Date: Sun, 04 Jul 2004 11:53:23 +0200
From: Josselin Mouette
Subject: Re: sdl 64bit problem [PATCH]
Le sam, 03/07/2004 <20> 18:20 +0200, Hans-Frieder Vogt a <20>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?
Index: libmikmod-3.1.12/include/mikmod.h.in
===================================================================
--- libmikmod-3.1.12.orig/include/mikmod.h.in
+++ libmikmod-3.1.12/include/mikmod.h.in
@@ -85,7 +85,7 @@ typedef char CHAR;
@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 */
Index: libmikmod-3.1.12/include/mikmod_internals.h
===================================================================
--- libmikmod-3.1.12.orig/include/mikmod_internals.h
+++ libmikmod-3.1.12/include/mikmod_internals.h
@@ -50,7 +50,7 @@ extern "C" {
/*========== 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__)

View File

@ -0,0 +1,113 @@
This patch fixes "buffer overflow due to md_numchn - ID: 1630158"
Index: libmikmod-3.1.12/playercode/mplayer.c
===================================================================
--- libmikmod-3.1.12.orig/playercode/mplayer.c
+++ libmikmod-3.1.12/playercode/mplayer.c
@@ -52,6 +52,8 @@ extern long int random(void);
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 @@ static int MP_FindEmptyChannel(MODULE *m
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 @@ static void DoNNAEffects(MODULE *mod, MP
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 @@ static void DoNNAEffects(MODULE *mod, MP
}
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 @@ void pt_UpdateVoices(MODULE *mod, int ma
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 @@ void pt_NNA(MODULE *mod)
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 @@ BOOL Player_Init(MODULE* mod)
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 @@ MIKMODAPI void Player_NextPosition(void)
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 @@ MIKMODAPI void Player_PrevPosition(void)
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 @@ MIKMODAPI void Player_SetPosition(UWORD
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;

View File

@ -1,7 +1,9 @@
--- loaders/load_xm.c
Index: loaders/load_xm.c
===================================================================
--- loaders/load_xm.c.orig
+++ loaders/load_xm.c
@@ -622,7 +622,8 @@
/* read the remainder of the header */
@@ -636,7 +636,8 @@ static BOOL LoadInstruments(void)
_mm_fseek(modreader,ck,SEEK_SET);
for(u=headend-_mm_ftell(modreader);u;u--) _mm_read_UBYTE(modreader);
- if(_mm_eof(modreader)) {
@ -10,9 +12,11 @@
free(nextwav);free(wh);
nextwav=NULL;wh=NULL;
_mm_errno = MMERR_LOADING_SAMPLEINFO;
--- playercode/mloader.c
Index: playercode/mloader.c
===================================================================
--- playercode/mloader.c.orig
+++ playercode/mloader.c
@@ -450,10 +450,12 @@
@@ -450,10 +450,12 @@ MODULE* Player_LoadGeneric_internal(MREA
if (!l->Init || l->Init()) {
_mm_rewind(modreader);
ok = l->Load(curious);

View File

@ -1,6 +1,8 @@
--- configure.in
+++ configure.in 2004/02/07 08:30:41
@@ -134,9 +134,8 @@
Index: configure.in
===================================================================
--- configure.in.orig
+++ configure.in
@@ -134,9 +134,8 @@ AC_PROG_CC
AC_PROG_CPP
AC_PROG_INSTALL
AC_PROG_LN_S
@ -11,7 +13,7 @@
# Check if makeinfo support html output. If it doesn't, pretend it's missing
# rather than failing rebuilding the documentation.
@@ -377,7 +376,7 @@
@@ -377,7 +376,7 @@ fi
AC_CHECK_FUNCS(setenv snprintf srandom)
AC_REPLACE_FUNCS(strcasecmp strdup strstr)
# Change extension, as we use libtool
@ -20,8 +22,10 @@
AC_HEADER_EGREP(srandom,math.h,AC_DEFINE(SRANDOM_IN_MATH_H))
--- include/Makefile.am
+++ include/Makefile.am 2004/02/07 08:28:27
Index: include/Makefile.am
===================================================================
--- include/Makefile.am.orig
+++ include/Makefile.am
@@ -1,3 +1,4 @@
### This @#!&*%$@ autoconf wants to have a mikmod_build.h.in file !!!
EXTRA_DIST = mikmod_internals.h mikmod_build.h.in

View File

@ -1,4 +1,6 @@
--- libmikmod-config.in
Index: libmikmod-config.in
===================================================================
--- libmikmod-config.in.orig
+++ libmikmod-config.in
@@ -3,6 +3,7 @@
prefix=@prefix@
@ -8,7 +10,7 @@
usage="\
Usage: libmikmod-config [--prefix[=DIR]] [--exec-prefix[=DIR]] [--version] [--libs] [--cflags] [--ldadd]"
@@ -49,8 +50,7 @@
@@ -49,8 +50,7 @@ while test $# -gt 0 ; do
echo @LIB_LDADD@
;;
--libs)

View File

@ -1,6 +1,8 @@
--- libmikmod.m4
Index: libmikmod.m4
===================================================================
--- libmikmod.m4.orig
+++ libmikmod.m4
@@ -64,6 +64,7 @@
@@ -64,6 +64,7 @@ dnl
#include <mikmod.h>
#include <stdio.h>
#include <stdlib.h>
@ -8,7 +10,7 @@
char* my_strdup (char *str)
{
@@ -78,7 +79,7 @@
@@ -78,7 +79,7 @@ char* my_strdup (char *str)
return new_str;
}
@ -17,7 +19,7 @@
{
int major,minor,micro;
int libmikmod_major_version,libmikmod_minor_version,libmikmod_micro_version;
@@ -118,7 +119,7 @@
@@ -118,7 +119,7 @@ int main()
(libmikmod_micro_version != LIBMIKMOD_REVISION))
{
printf("*** libmikmod header files (version %d.%d.%d) do not match\n",

View File

@ -0,0 +1,22 @@
Date: 15 Apr 2002 11:01:19 +0200
From: Guillaume Cottenceau <gc@mandrakesoft.com>
Unfortunately, I should have double checked that the following
fix (authored by Dave Goehrig <dave@cthulhu-burger.org>, 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.
Index: libmikmod-3.1.12/playercode/virtch_common.c
===================================================================
--- libmikmod-3.1.12.orig/playercode/virtch_common.c
+++ libmikmod-3.1.12/playercode/virtch_common.c
@@ -347,7 +347,7 @@ void VC1_VoiceSetPanning(UBYTE voice,ULO
void VC1_SampleUnload(SWORD handle)
{
- if (handle<MAXSAMPLEHANDLES) {
+ if (Samples && handle<MAXSAMPLEHANDLES) {
if (Samples[handle])
free(Samples[handle]);
Samples[handle]=NULL;

View File

@ -0,0 +1,16 @@
Yi-Huang Han - Wed Oct 24 21:55:47 PDT 2001
* Fixed MOD music volume when looping
Index: libmikmod-3.1.12/playercode/mplayer.c
===================================================================
--- libmikmod-3.1.12.orig/playercode/mplayer.c
+++ libmikmod-3.1.12/playercode/mplayer.c
@@ -3019,7 +3019,7 @@ MIKMODAPI void Player_SetVolume(SWORD vo
{
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);
}

3
libmikmod-3.1.12.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:3ae3a28201ed314e8fecdfa3ab3ff6768d4c1e71ea9eda33d02c3164022e8492
size 495167

View File

@ -1,38 +0,0 @@
--- playercode/mplayer.c
+++ playercode/mplayer.c
@@ -2318,7 +2318,7 @@
SAMPLE *s;
mod->totalchn=mod->realchn=0;
- for (channel=0;channel<md_sngchn;channel++) {
+ for (channel=0;channel<mod->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;

View File

@ -1,3 +1,15 @@
-------------------------------------------------------------------
Mon Dec 21 15:01:16 UTC 2009 - prusnak@suse.cz
- updated to 3.1.12
* bugfix release
- refreshed all patches
-------------------------------------------------------------------
Sat Dec 19 19:28:32 CET 2009 - jengelh@medozas.de
- add baselibs.conf as a source
-------------------------------------------------------------------
Thu Feb 26 17:59:33 CET 2009 - prusnak@suse.cz

View File

@ -1,5 +1,5 @@
#
# spec file for package libmikmod (Version 3.1.11a)
# spec file for package libmikmod (Version 3.1.12)
#
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@ -21,25 +21,27 @@
Name: libmikmod
BuildRequires: esound-devel
Url: http://mikmod.raphnet.net/
License: LGPL v2.1 or later
License: LGPLv2.1+
Group: System/Libraries
Summary: MikMod Sound Library
Version: 3.1.11a
Release: 117
%define _version 3.1.11
Version: 3.1.12
Release: 1
# bug437293
%ifarch ppc64
Obsoletes: libmikmod-64bit
%endif
#
Source: %{name}-%{_version}.tar.bz2
Source1: libmikmod-rpmlintrc
Patch0: libmikmod-3.1.11-a.diff
Patch1: libmikmod.diff
Patch2: libmikmod-config-fix.dif
Patch3: libmikmod-conftest_fix.diff
Patch4: libmikmod-CVE-2007-6720.diff
Patch5: libmikmod-CVE-2009-0179.diff
Source: %{name}-%{version}.tar.bz2
Source1: %{name}-rpmlintrc
Source2: baselibs.conf
Patch0: %{name}-3.1.12-CVE-2007-6720.diff
Patch1: %{name}-3.1.12-CVE-2009-0179.diff
Patch2: %{name}-3.1.12-64bit-fix.diff
Patch3: %{name}-3.1.12-autotools.diff
Patch4: %{name}-3.1.12-config-fix.diff
Patch5: %{name}-3.1.12-conftest_fix.diff
Patch6: %{name}-3.1.12-exitcrash-fix.diff
Patch7: %{name}-3.1.12-loopingvolume-fix.diff
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
@ -52,7 +54,7 @@ mtm, xm, and it.
%package devel
License: LGPL v2.1 or later
License: LGPLv2.1+
Group: Development/Libraries/C and C++
Summary: Development files for MikMod Sound Library
Requires: %{name} = %{version} glibc-devel audiofile-devel
@ -76,13 +78,15 @@ mtm, xm, and it.
%prep
%setup -q -n %{name}-%{_version}
%setup -q
%patch0 -p1
%patch1
%patch2
%patch2 -p1
%patch3
%patch4
%patch5
%patch6 -p1
%patch7 -p1
%build
autoreconf -f -i
@ -123,81 +127,3 @@ rm -rf $RPM_BUILD_ROOT
%doc %{_mandir}/man1/*-config.*
%changelog
* Thu Feb 26 2009 prusnak@suse.cz
- fixed CVE-2009-0179 [bnc#468760]
* Fri Jan 23 2009 prusnak@suse.cz
- fixed DoS CVE-2007-6720 [bnc#468760]
* Fri Jan 09 2009 crrodriguez@suse.de
- remove static libraries and "la" files
* Wed Jan 07 2009 olh@suse.de
- obsolete old -XXbit packages (bnc#437293)
* Thu Apr 10 2008 ro@suse.de
- added baselibs.conf file to build xxbit packages
for multilib support
* Fri Aug 31 2007 bk@suse.de
- Remove obsoleted 64-bit patch (fixes background music of pingus)
* Wed Apr 11 2007 sbrabec@suse.cz
- Updated to version 3.1.11-a:
* work correctly on amd64
* fixes a warning issued by automake-1.8 in libmikmod.m4
* includes an updated version of config.guess and config.sub
- Split devel subpackage (#263232).
* Fri Mar 23 2007 schwab@suse.de
- Require audiofile-devel.
- Fix 64bit patch.
* Thu Jan 26 2006 sbrabec@suse.cz
- Added %%install_info_prereq.
* Wed Jan 25 2006 mls@suse.de
- converted neededforbuild to BuildRequires
* Fri Nov 04 2005 ltinkl@suse.cz
- update to 3.1.11
* Thu Sep 08 2005 pth@suse.de
- Fix libmikmod-config for real (#96912)
* Tue Sep 06 2005 jpr@suse.de
- Make sure libmikmod-config reports libdir correctly on all
architectures (96912)
* Thu Apr 14 2005 sbrabec@suse.cz
- Added audiofile-devel to neededforbuild.
* Thu Mar 04 2004 tiwai@suse.de
- fixed m4 file for the recent autoconf.
* Sat Feb 07 2004 adrian@suse.de
- fix some autoconf issues
* Thu Apr 24 2003 ro@suse.de
- fix install_info --delete call and move from preun to postun
* Fri Feb 14 2003 adrian@suse.de
- fix info file name
* Thu Feb 13 2003 adrian@suse.de
- add %%install_info section
* Tue Aug 20 2002 tiwai@suse.de
- fixed the detection of 64bit architectures [bug #18106]
* Tue Aug 06 2002 adrian@suse.de
- add %%run_ldconfig
* Tue Jun 04 2002 ro@suse.de
- fix file list
* Fri May 31 2002 adrian@suse.de
- update to version 3.1.10
- renamed libmikmo -> libmikmod
- fix for lib64 and ppc64
- add esd support
- add alsa support
- use buildroot
* Sat Nov 04 2000 kukuk@suse.de
- use new long package names
* Wed Jun 21 2000 schwab@suse.de
- Add %%suse_update_config.
* Sun Jun 18 2000 adrian@suse.de
- fixed man path
* Fri Jun 16 2000 adrian@suse.de
- update to 3.1.9
* Fri Jun 02 2000 uli@suse.de
- moved docs to %%{_docdir}
* Thu Mar 02 2000 uli@suse.de
- moved info files to %%{_infodir}
* Mon Sep 13 1999 bs@suse.de
- ran old prepare_spec on spec file to switch to new prepare_spec.
* Tue Sep 07 1999 kettner@suse.de
- New version 3.1.7
* Fri May 07 1999 kettner@suse.de
- Install additional include files for kmikmod
* Thu May 06 1999 kettner@suse.de
- Spec file created from libmikmod-3.1.6.tar.gz by autospec