summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Kellermann <max@musicpd.org>2018-02-09 19:01:12 +0100
committerMax Kellermann <max@musicpd.org>2018-02-09 19:01:12 +0100
commit6de92bb42bb61e7eb849bd554429579d6c61a77e (patch)
treef5ef2b9ab85b840fc11ee264fdb7b0f16c6f2026
parentc801936e531222ba1cb526c585d8ece3e68315bf (diff)
pcm/Order: fix size calculation with 8 channels
This was a buffer overflow bug which could cause MPD crahes when playing back 8 channels with the ALSA output plugin. Closes #216
-rw-r--r--NEWS2
-rw-r--r--src/pcm/Order.cxx2
2 files changed, 3 insertions, 1 deletions
diff --git a/NEWS b/NEWS
index b11108401..b9057693d 100644
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,6 @@
ver 0.20.17 (not yet released)
+* output
+ - alsa: fix crash bug with 8 channels
* fix real-time and idle scheduling with Musl
ver 0.20.16 (2018/02/03)
diff --git a/src/pcm/Order.cxx b/src/pcm/Order.cxx
index 1812b14dd..736eb472d 100644
--- a/src/pcm/Order.cxx
+++ b/src/pcm/Order.cxx
@@ -88,7 +88,7 @@ static inline ConstBuffer<V>
ToAlsaChannelOrder71(PcmBuffer &buffer, ConstBuffer<V> src)
{
auto dest = buffer.GetT<V>(src.size);
- ToAlsaChannelOrder71(dest, src.data, src.size / 6);
+ ToAlsaChannelOrder71(dest, src.data, src.size / 8);
return { dest, src.size };
}