[alsa-devel] [patch] riptide: clean up while loop

Takashi Iwai tiwai at suse.de
Wed Mar 3 22:51:22 CET 2010


At Wed, 3 Mar 2010 10:13:49 +0300,
Dan Carpenter wrote:
> 
> If getpaths() returned an odd number this would be a buffer under-run and an 
> endless loop.  It turns out that getpaths() can only return even numbers, but 
> let's make it easy for people auditing code.  With the new code you don't 
> need to look at getpaths().
> 
> This silences a smatch warning.
> 
> Signed-off-by: Dan Carpenter <error27 at gmail.com>

Applied now.  Thanks.


Takashi

> diff --git a/sound/pci/riptide/riptide.c b/sound/pci/riptide/riptide.c
> index e66ef2b..a5924af 100644
> --- a/sound/pci/riptide/riptide.c
> +++ b/sound/pci/riptide/riptide.c
> @@ -1974,9 +1974,9 @@ snd_riptide_proc_read(struct snd_info_entry *entry,
>  	}
>  	snd_iprintf(buffer, "Paths:\n");
>  	i = getpaths(cif, p);
> -	while (i--) {
> -		snd_iprintf(buffer, "%x->%x ", p[i - 1], p[i]);
> -		i--;
> +	while (i >= 2) {
> +		i -= 2;
> +		snd_iprintf(buffer, "%x->%x ", p[i], p[i + 1]);
>  	}
>  	snd_iprintf(buffer, "\n");
>  }
> 


More information about the Alsa-devel mailing list