• R/O
  • HTTP
  • SSH
  • HTTPS

コミット

タグ
未設定

よく使われているワード(クリックで追加)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

コミットメタ情報

リビジョン2bf8c9431e7d7b17dbcc252deee80bedbef724a6 (tree)
日時2014-08-21 11:01:54
作者yta <yta@inte...>
コミッターTAMUKI Shoichi

ログメッセージ

Fix reverb buffer-overrun issue

Add code to check the upper limit of the index. TiMidity++ to buffer-
overrun when the value of the reverb_status_gs.character was a 6 or 7.
info->index is set to a value out of range when the value of the
"Reverb Time" was -64.

Signed-off-by: yta <yta@inter7.jp>

変更サマリ

差分

--- a/timidity/reverb.c
+++ b/timidity/reverb.c
@@ -1600,6 +1600,9 @@ static void init_ch_reverb_delay(InfoDelay3 *info)
16001600 set_delay(&(info->delayL), x);
16011601 set_delay(&(info->delayR), x);
16021602 info->index[0] = x - info->size[0];
1603+ if (info->index[0] >= info->size[0]) {
1604+ info->index[0] = (info->size[0] == 0) ? 0 : info->size[0] - 1;
1605+ }
16031606 info->level[0] = (double)reverb_status_gs.level * 1.82 / 127.0;
16041607 info->feedback = sqrt((double)reverb_status_gs.delay_feedback / 127.0) * 0.98;
16051608 info->leveli[0] = TIM_FSCALE(info->level[0], 24);