summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaroslav Kysela <perex@perex.cz>2023-05-16 08:57:31 +0200
committerJaroslav Kysela <perex@perex.cz>2023-05-16 08:59:20 +0200
commit3661bdae35961e4a4dd67a60682550e30b878207 (patch)
treeaab463fb014c06583b34f1b87bcd3813c9c90495
parent904f0f7e7a29244c05e5874bc36486638d1f7e7f (diff)
downloadalsa-lib-3661bdae35961e4a4dd67a60682550e30b878207.tar.gz
pcm: hw - prevent divide by zero for broken apps
Fixes: https://github.com/alsa-project/alsa-lib/issues/318 Signed-off-by: Jaroslav Kysela <perex@perex.cz>
-rw-r--r--src/pcm/pcm_hw.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/pcm/pcm_hw.c b/src/pcm/pcm_hw.c
index 8ffebed9..26ff62c2 100644
--- a/src/pcm/pcm_hw.c
+++ b/src/pcm/pcm_hw.c
@@ -742,6 +742,9 @@ static int snd_pcm_hw_drain(snd_pcm_t *pcm)
if (pcm->stream != SND_PCM_STREAM_PLAYBACK)
goto __skip_silence;
+ /* stream probably in SETUP, prevent divide by zero */
+ if (pcm->period_size == 0)
+ goto __skip_silence;
if (hw->drain_silence == 0 || hw->perfect_drain)
goto __skip_silence;
snd_pcm_sw_params_current_no_lock(pcm, &sw_params);