RetroArch/audio
Mike Robinson addbcc6487 Fix buffer overflow in JACK audio driver
retroarch.c:flush_rewind_audio() can potentially send up to
audio_data.rewind_buf of 2048 frames (4096 samples) to audio_flush().

rarch_resampler_process() can potentially multiply the number of
frames by AUDIO_MAX_RATIO, to 32768 frames.

audio/jack.c:write_buffer() allocates a buffer of only 2048 frames on
the stack, which can overflow. This reliably happens when rewinding in
slow motion.

Multiply the JACK driver buffer by AUDIO_MAX_RATIO to prevent overflow.

However, DSP can also adjust the number of frames without limit. There
is no DSP_MAX_RATIO, so check the number of frames in
audio/jack.c:write_buffer() and truncate if they will not fit the
buffer. This will cause garbled audio, but in practice it is unlikely
to occur (DSP plugins do not usually add frames, flush_rewind_audio()
does not usually send the maximum possible number of frames).
2014-08-31 15:50:34 +01:00
..
filters
test
xaudio-c
alsa_qsa.c
alsa.c
alsathread.c
cc_resampler.c
coreaudio.c
dsound.c
dsp_filter.c
dsp_filter.h
gx_audio.c
jack.c Fix buffer overflow in JACK audio driver 2014-08-31 15:50:34 +01:00
librsound.c
nullaudio.c
openal.c
opensl.c
oss.c
ps3_audio.c
psp1_audio.c
pulse.c
resampler.c
resampler.h
roar.c
rsound.c
rsound.h
rwebaudio.c
sdl_audio.c
sinc_neon.S
sinc.c
thread_wrapper.c
thread_wrapper.h
utils_neon.S
utils.c
utils.h
xaudio.c
xenon360_audio.c