_ [comp] audacious の AdPlug でクラッシュ

audacious のプレイリストに曲を追加するとき、音楽ファイルでないものを追加すると

% audacious
*** glibc detected *** free(): invalid next size (fast): 0x0861db80 ***
zsh: abort (core dumped) audacious
%

のようにクラッシュすることがある。gdb で見てみると、

(gdb) bt
        :
4 0x408f7821 in raise () from /lib/tls/i686/cmov/libc.so.6
5 0x408f8fb9 in abort () from /lib/tls/i686/cmov/libc.so.6
6 0x4092cc4a in __fsetlocking () from /lib/tls/i686/cmov/libc.so.6
7 0x409344df in mallopt () from /lib/tls/i686/cmov/libc.so.6
8 0x40934582 in free () from /lib/tls/i686/cmov/libc.so.6
9 0x40882591 in operator delete () from /usr/lib/libstdc++.so.6
10 0x408825ed in operator delete[] () from /usr/lib/libstdc++.so.6
0000011 0x41bbb773 in CrolPlayer::load ()
   from /usr/lib/audacious/Input/libadplug.so
0000012 0x41b96aef in CAdPlug::factory ()
   from /usr/lib/audacious/Input/libadplug.so
0000013 0x41b92dab in get_iplugin_info ()
   from /usr/lib/audacious/Input/libadplug.so
0000014 0x41b93677 in get_iplugin_info ()
   from /usr/lib/audacious/Input/libadplug.so

どうも AdPlug が怪しい。CrolPlayer::load は src/adplug/core/rol.cxx にある。いろいろ printf とか仕掛けて追ってみると何のことはない、「standard.bnk」なる 12 文字を 9 しかないバッファに strcpy していた。バッファサイズを増やしてやると問題なくなった。パッチはこれ > vd_adplug-core-rol.cxx-bof-fix.patch audaciousAdPlug 本家両方に報告した。