From: Jaroslav Kysela Date: Fri, 6 Feb 2004 09:38:49 +0000 (+0000) Subject: Added start_threshold sanity checks X-Git-Tag: v1.0.3~21 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=9505cbe5d8e704c1e918c342b6774766fd5d7847;p=alsa-lib.git Added start_threshold sanity checks --- diff --git a/src/pcm/pcm.c b/src/pcm/pcm.c index 3773552b..272c9541 100644 --- a/src/pcm/pcm.c +++ b/src/pcm/pcm.c @@ -819,6 +819,16 @@ int snd_pcm_sw_params(snd_pcm_t *pcm, snd_pcm_sw_params_t *params) { int err; assert(pcm->setup); /* the hw_params must be set at first!!! */ + if (params->start_threshold <= pcm->buffer_size && + params->start_threshold > (pcm->buffer_size / params->avail_min) * params->avail_min) { + SNDERR("snd_pcm_sw_params: params->avail_min problem for start_threshold"); + return -EINVAL; + } + if (params->start_threshold <= pcm->buffer_size && + params->start_threshold > (pcm->buffer_size / params->xfer_align) * params->xfer_align) { + SNDERR("snd_pcm_sw_params: params->xfer_align problem for start_threshold"); + return -EINVAL; + } err = pcm->ops->sw_params(pcm->op_arg, params); if (err < 0) return err; @@ -6041,8 +6051,7 @@ snd_pcm_sframes_t snd_pcm_write_areas(snd_pcm_t *pcm, const snd_pcm_channel_area err = snd_pcm_wait(pcm, -1); if (err < 0) break; - goto _again; - + goto _again; } if ((snd_pcm_uframes_t) avail > pcm->xfer_align) avail -= avail % pcm->xfer_align;