diff --git a/packages/timidity++/CVE-2017-11546.patch b/packages/timidity++/CVE-2017-11546.patch new file mode 100644 index 000000000..94135e98b --- /dev/null +++ b/packages/timidity++/CVE-2017-11546.patch @@ -0,0 +1,31 @@ +From 2386ec2c745f6c5075e53ea051da211336b44b84 Mon Sep 17 00:00:00 2001 +From: Takashi Iwai +Date: Tue, 26 Jun 2018 22:31:27 +0200 +Subject: readmidi: Fix division by zero + +References: CVE-2017-11546 + +An adhoc fix for division by zero in insert_note_steps(). + +Signed-off-by: Takashi Iwai +bug-debian: https://bugs.debian.org/870338 +bug-suse: https://bugzilla.suse.com/show_bug.cgi?id=1081694 +bug: https://bugzilla.suse.com/show_bug.cgi?id=1081694 +origin: https://bugzilla.suse.com/attachment.cgi?id=760825 +--- + timidity/readmidi.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/timidity/readmidi.c b/timidity/readmidi.c +index 158388a..341777e 100644 +--- a/timidity/readmidi.c ++++ b/timidity/readmidi.c +@@ -4585,6 +4585,8 @@ static void insert_note_steps(void) + if (beat != 0) + meas++, beat = 0; + num = timesig[n].a, denom = timesig[n].b, n++; ++ if (!denom) ++ denom = 1; + } + a = (meas + 1) & 0xff; + b = (((meas + 1) >> 8) & 0x0f) + ((beat + 1) << 4); diff --git a/packages/timidity++/CVE-2017-11547.patch b/packages/timidity++/CVE-2017-11547.patch new file mode 100644 index 000000000..12562a577 --- /dev/null +++ b/packages/timidity++/CVE-2017-11547.patch @@ -0,0 +1,67 @@ +From 34328d22cbb4ccf03f29223f54f1834c796d86a2 Mon Sep 17 00:00:00 2001 +From: Takashi Iwai +Date: Tue, 26 Jun 2018 22:31:28 +0200 +Subject: resample: Fix out-of-bound access in resamplers + +References: CVE-2017-11547 + +An adhoc fix for out-of-bound accesses in resamples. +The offset might overflow the given data range. + +Signed-off-by: Takashi Iwai +bug-debian: https://bugs.debian.org/870338 +bug-suse: https://bugzilla.suse.com/show_bug.cgi?id=1081694 +origin: https://bugzilla.suse.com/attachment.cgi?id=760826 +--- + timidity/resample.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/timidity/resample.c b/timidity/resample.c +index cd6b8e6..4a3fadf 100644 +--- a/timidity/resample.c ++++ b/timidity/resample.c +@@ -57,6 +57,8 @@ static resample_t resample_cspline(sample_t *src, splen_t ofs, resample_rec_t *r + { + int32 ofsi, ofsf, v0, v1, v2, v3, temp; + ++ if (ofs + (1 << FRACTION_BITS) >= rec->data_length) ++ return src[ofs >> FRACTION_BITS]; + ofsi = ofs >> FRACTION_BITS; + v1 = src[ofsi]; + v2 = src[ofsi + 1]; +@@ -96,6 +98,8 @@ static resample_t resample_lagrange(sample_t *src, splen_t ofs, resample_rec_t * + { + int32 ofsi, ofsf, v0, v1, v2, v3; + ++ if (ofs + (1 << FRACTION_BITS) >= rec->data_length) ++ return src[ofs >> FRACTION_BITS]; + ofsi = ofs >> FRACTION_BITS; + v1 = (int32)src[ofsi]; + v2 = (int32)src[ofsi + 1]; +@@ -154,6 +158,8 @@ static resample_t resample_gauss(sample_t *src, splen_t ofs, resample_rec_t *rec + sample_t *sptr; + int32 left, right, temp_n; + ++ if (ofs + (1 << FRACTION_BITS) >= rec->data_length) ++ return src[ofs >> FRACTION_BITS]; + left = (ofs>>FRACTION_BITS); + right = (rec->data_length>>FRACTION_BITS) - left - 1; + temp_n = (right<<1)-1; +@@ -261,6 +267,8 @@ static resample_t resample_newton(sample_t *src, splen_t ofs, resample_rec_t *re + int32 left, right, temp_n; + int ii, jj; + ++ if (ofs + (1 << FRACTION_BITS) >= rec->data_length) ++ return src[ofs >> FRACTION_BITS]; + left = (ofs>>FRACTION_BITS); + right = (rec->data_length>>FRACTION_BITS)-(ofs>>FRACTION_BITS)-1; + temp_n = (right<<1)-1; +@@ -330,6 +338,8 @@ static resample_t resample_linear(sample_t *src, splen_t ofs, resample_rec_t *re + { + int32 v1, v2, ofsi; + ++ if (ofs + (1 << FRACTION_BITS) >= rec->data_length) ++ return src[ofs >> FRACTION_BITS]; + ofsi = ofs >> FRACTION_BITS; + v1 = src[ofsi]; + v2 = src[ofsi + 1]; diff --git a/packages/timidity++/build.sh b/packages/timidity++/build.sh new file mode 100644 index 000000000..294e36b5d --- /dev/null +++ b/packages/timidity++/build.sh @@ -0,0 +1,39 @@ +TERMUX_PKG_HOMEPAGE=http://timidity.sourceforge.net/ +TERMUX_PKG_DESCRIPTION="MIDI-to-WAVE converter and player" +TERMUX_PKG_LICENSE="GPL-2.0" +TERMUX_PKG_MAINTAINER="@termux" +TERMUX_PKG_VERSION=2.15.0 +TERMUX_PKG_SRCURL=https://downloads.sourceforge.net/timidity/TiMidity++-${TERMUX_PKG_VERSION}.tar.xz +TERMUX_PKG_SHA256=9eaf4fadb0e19eb8e35cd4ac16142d604c589e43d0e8798237333697e6381d39 +TERMUX_PKG_CONFFILES=" +share/timidity/timidity.cfg +" +TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" +--enable-dynamic +--enable-vt100 +--enable-server +--enable-network +--with-module-dir=$TERMUX_PREFIX/share/timidity +lib_cv_va_copy=yes +lib_cv___va_copy=yes +lib_cv_va_val_copy=yes +" + +termux_step_pre_configure() { + autoreconf -fi +} + +termux_step_post_configure() { + mkdir -p _build + $CC_FOR_BUILD $TERMUX_PKG_SRCDIR/timidity/calcnewt.c \ + -o _build/calcnewt -lm + export PATH="$(pwd)/_build:$PATH" + + ln -sf $TERMUX_PKG_SRCDIR/timidity/resample.c timidity/ +} + +termux_step_post_make_install() { + sed "s:@TERMUX_PREFIX@:$TERMUX_PREFIX:g" \ + $TERMUX_PKG_BUILDER_DIR/timidity.cfg > timidity.cfg + install -Dm600 -t $TERMUX_PREFIX/share/timidity timidity.cfg +} diff --git a/packages/timidity++/timidity-Makefile.am.patch b/packages/timidity++/timidity-Makefile.am.patch new file mode 100644 index 000000000..01c724280 --- /dev/null +++ b/packages/timidity++/timidity-Makefile.am.patch @@ -0,0 +1,11 @@ +--- a/timidity/Makefile.am ++++ b/timidity/Makefile.am +@@ -460,7 +460,7 @@ + + else + newton_table.c: calcnewt$(EXEEXT) +- ./calcnewt > $@ ++ calcnewt > $@ + + endif + endif diff --git a/packages/timidity++/timidity-common.c.patch b/packages/timidity++/timidity-common.c.patch new file mode 100644 index 000000000..bf5cc0c8d --- /dev/null +++ b/packages/timidity++/timidity-common.c.patch @@ -0,0 +1,11 @@ +--- a/timidity/common.c ++++ b/timidity/common.c +@@ -192,7 +192,7 @@ + tmpdir = getenv("TMPDIR"); + #endif + if(tmpdir == NULL || strlen(tmpdir) == 0) +- tmpdir = PATH_STRING "tmp" PATH_STRING; ++ tmpdir = "@TERMUX_PREFIX@/tmp/"; + if(IS_PATH_SEP(tmpdir[strlen(tmpdir) - 1])) + snprintf(filename, sizeof(filename), "%sXXXXXX.%s", tmpdir, ext); + else diff --git a/packages/timidity++/timidity.cfg b/packages/timidity++/timidity.cfg new file mode 100644 index 000000000..e9d57e98f --- /dev/null +++ b/packages/timidity++/timidity.cfg @@ -0,0 +1,48 @@ +# Copyright: 1996 Klee Dienes +# 1997-2002 Martin Mitchell +# 2003-2005 Henrique de Moraes Holschuh +# 2007-2010 Joost Yervante Damad +# 2018 Reiner Herrmann +# License: GPL-2+ +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation; either version 2, or (at your option) any +# later version. + +# Instrument configuration file for timidity +# $Id: timidity.cfg,v 1.7 2005/09/03 19:26:03 hmh Exp $ + +# You can change just about every option in TiMidity++ using +# This config file. Please refer to the timidity.cfg(5) manpage +# for more details + +## If you have a slow CPU, uncomment these: +#opt EFresamp=d #disable resampling +#opt EFvlpf=d #disable VLPF +#opt EFreverb=d #disable reverb +#opt EFchorus=d #disable chorus +#opt EFdelay=d #disable delay +#opt anti-alias=d #disable sample anti-aliasing +#opt EWPVSETOZ #disable all Midi Controls +#opt p32a #default to 32 voices with auto reduction +#opt s32kHz #default sample frequency to 32kHz +#opt fast-decay #fast decay notes + +## If you have a moderate CPU, try these: +#opt EFresamp=l +#opt EFreverb=g,42 +#opt EFchorus=s +#opt s32kHz +#opt p64a + +# Disabling some of the Midi Controls can help with the CPU usage a lot. +# The same goes to the VLPF, sample anti-aliasing and effects such as +# reverb and chorus + +# By default, try to use the instrument patches from freepats: +#source @TERMUX_PREFIX@/share/timidity/freepats.cfg + +# alternatively, you can use the fluid-soundfont: +#source @TERMUX_PREFIX@/share/timidity/fluidr3_gm.cfg +#source @TERMUX_PREFIX@/share/timidity/fluidr3_gs.cfg