summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatti Niemenmaa2016-07-09 20:40:56 +0300
committerMatti Niemenmaa2016-07-09 20:40:56 +0300
commit990640b5a10a97f6fdf0dec61036ccbeba0e8eb2 (patch)
tree9322847cad985897c7f22282ca87b29b02c1e47e
parentfc8dbc87110068b9588047713487a1a24ffd006e (diff)
downloadaur-990640b5a10a97f6fdf0dec61036ccbeba0e8eb2.tar.gz
Hackily patch some integer overflow issues
I ran into a situation where one of these multiplications overflowed, resulting in eventual memory corruption and similar fun things. Using longs should mitigate the issue but may or may not actually fix it.
-rw-r--r--.SRCINFO4
-rw-r--r--PKGBUILD9
-rw-r--r--integer-overflow.patch22
3 files changed, 31 insertions, 4 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 50919f809959..c4187d67d2b2 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,7 +1,7 @@
pkgbase = mdxmini-git
pkgdesc = Library and command line player for Sharp X68000 MDX music files
pkgver = r19.eda5bca
- pkgrel = 2
+ pkgrel = 3
url = https://github.com/weimingtom/mdxplayer/tree/master/jni/mdxmini
arch = i686
arch = x86_64
@@ -10,9 +10,11 @@ pkgbase = mdxmini-git
source = mdxmini-git::git+https://github.com/weimingtom/mdxplayer.git
source = buffer-size.patch
source = makefiles.patch
+ source = integer-overflow.patch
sha256sums = SKIP
sha256sums = 4f8ec91487736c9ad864f54c615b491c406464573469ed59b1d4f6be77cf2812
sha256sums = 8711dd394c9b99e351026a8e88583d61142cab29a344434338b9589022a64582
+ sha256sums = e6210879c1418b30ed6645675822a572edae1b223cbca9fdf30b3d398c787a4c
pkgname = mdxmini-git
depends = glibc
diff --git a/PKGBUILD b/PKGBUILD
index 41848902ba2f..2c62fa8d2d36 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,7 +1,7 @@
pkgbase=mdxmini-git
pkgname=(mdxmini-git mdxplay-git)
pkgver=r19.eda5bca
-pkgrel=2
+pkgrel=3
pkgdesc='Library and command line player for Sharp X68000 MDX music files'
arch=(i686 x86_64)
# BouKiCHi's original repo seems to be gone so use this random, most up to
@@ -11,10 +11,12 @@ license=(GPL2)
makedepends=(git)
source=("$pkgbase"::'git+https://github.com/weimingtom/mdxplayer.git'
buffer-size.patch
- makefiles.patch)
+ makefiles.patch
+ integer-overflow.patch)
sha256sums=('SKIP'
'4f8ec91487736c9ad864f54c615b491c406464573469ed59b1d4f6be77cf2812'
- '8711dd394c9b99e351026a8e88583d61142cab29a344434338b9589022a64582')
+ '8711dd394c9b99e351026a8e88583d61142cab29a344434338b9589022a64582'
+ 'e6210879c1418b30ed6645675822a572edae1b223cbca9fdf30b3d398c787a4c')
pkgver() {
cd "$srcdir/$pkgbase"
@@ -28,6 +30,7 @@ prepare() {
cd "$srcdir/$pkgbase"
patch -p1 -i "$srcdir"/makefiles.patch
patch -p1 -i "$srcdir"/buffer-size.patch
+ patch -p0 -i "$srcdir"/integer-overflow.patch
}
build() {
diff --git a/integer-overflow.patch b/integer-overflow.patch
new file mode 100644
index 000000000000..bbd8fa6c97d2
--- /dev/null
+++ b/integer-overflow.patch
@@ -0,0 +1,22 @@
+diff --git jni/mdxmini/src/mdxmini.c jni/mdxmini/src/mdxmini.c
+index a5bb8e3..3a07c26 100755
+--- jni/mdxmini/src/mdxmini.c
++++ jni/mdxmini/src/mdxmini.c
+@@ -276,7 +276,7 @@ int mdx_calc_sample(t_mdxmini *data, short *buf, int buffer_size)
+ frame = mdx_frame_length(data);
+
+ // 生成可能サンプル数
+- data->samples += (data->mdx->dsp_speed * frame)/1000000;
++ data->samples += ((long)data->mdx->dsp_speed * (long)frame)/1000000;
+ }
+
+ int len = data->samples;
+@@ -324,7 +324,7 @@ int mdx_calc_log(t_mdxmini *data, short *buf, int buffer_size)
+ #endif
+ next = mdx_next_frame(data);
+ frame = mdx_frame_length(data);
+- data->samples = (data->mdx->dsp_speed * frame)/1000000;
++ data->samples = ((long)data->mdx->dsp_speed * (long)frame)/1000000;
+ }
+
+ int calc_len = data->samples;