aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnssi Hannula <anssi.hannula@iki.fi>2014-12-31 04:51:19 +0200
committerAnssi Hannula <anssi.hannula@iki.fi>2014-12-31 04:51:19 +0200
commit054ad1a9365a17e1b54fde10e1b72e5662f7f982 (patch)
tree45be7a9718a2f7dc00ac93fd26a5f24ce0366cea
parenta684387aa15c5980667adcb510796c982babbb75 (diff)
parent957f8e2474ce733d9d05cb67b62721e9b3b1c389 (diff)
Merge pull request #6065 from anssih/fix/AE-ticket15641
AESinkALSA: Workaround alsa-lib buffer overflow in snd_pcm_chmap_print
-rw-r--r--xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp b/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp
index d30cbabce7..df50940afc 100644
--- a/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp
+++ b/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp
@@ -338,8 +338,10 @@ snd_pcm_chmap_t* CAESinkALSA::CopyALSAchmap(snd_pcm_chmap_t* alsaMap)
std::string CAESinkALSA::ALSAchmapToString(snd_pcm_chmap_t* alsaMap)
{
- char buf[64] = { 0 };
- int err = snd_pcm_chmap_print(alsaMap, sizeof(buf), buf);
+ char buf[128] = { 0 };
+ // ALSA bug - buffer overflow by a factor of 2 is possible
+ // http://mailman.alsa-project.org/pipermail/alsa-devel/2014-December/085815.html
+ int err = snd_pcm_chmap_print(alsaMap, sizeof(buf) / 2, buf);
if (err < 0)
return "Error";
return std::string(buf);