diff options
author | Matti Niemenmaa | 2016-07-09 20:40:56 +0300 |
---|---|---|
committer | Matti Niemenmaa | 2016-07-09 20:40:56 +0300 |
commit | 990640b5a10a97f6fdf0dec61036ccbeba0e8eb2 (patch) | |
tree | 9322847cad985897c7f22282ca87b29b02c1e47e | |
parent | fc8dbc87110068b9588047713487a1a24ffd006e (diff) | |
download | aur-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-- | .SRCINFO | 4 | ||||
-rw-r--r-- | PKGBUILD | 9 | ||||
-rw-r--r-- | integer-overflow.patch | 22 |
3 files changed, 31 insertions, 4 deletions
@@ -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 @@ -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; |