[alsa-devel] [PATCH] ALSA: asihpi - Clarify adapter index validity check.

Takashi Iwai tiwai at suse.de
Thu Jul 28 07:43:16 CEST 2011


At Thu, 28 Jul 2011 09:50:17 +1200,
linux at audioscience.com wrote:
> 
> From: Eliot Blennerhassett <eblennerhassett at audioscience.com>
> 
> Avoids assigning possibly invalid address to pa, even if it
> is never dereferenced.
> 
> Signed-off-by: Eliot Blennerhassett <eblennerhassett at audioscience.com>
> ---
>  sound/pci/asihpi/hpioctl.c |   19 ++++++++++++-------
>  1 files changed, 12 insertions(+), 7 deletions(-)
> 
> diff --git a/sound/pci/asihpi/hpioctl.c b/sound/pci/asihpi/hpioctl.c
> index 9683f84..a32502e 100644
> --- a/sound/pci/asihpi/hpioctl.c
> +++ b/sound/pci/asihpi/hpioctl.c
> @@ -177,16 +177,21 @@ long asihpi_hpi_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
>  	} else {
>  		u16 __user *ptr = NULL;
>  		u32 size = 0;
> -
> +		u32 adapter_present;
>  		/* -1=no data 0=read from user mem, 1=write to user mem */
>  		int wrflag = -1;
> -		u32 adapter = hm->h.adapter_index;
> -		struct hpi_adapter *pa = &adapters[adapter];
> +		struct hpi_adapter *pa;
> +
> +		if (hm->h.adapter_index < HPI_MAX_ADAPTERS) {
> +			pa = &adapters[hm->h.adapter_index];
> +			adapter_present = pa->type;
> +		} else {
> +			adapter_present = 0;
> +		}
>  
> -		if ((adapter >= HPI_MAX_ADAPTERS) || (!pa->type)) {
> -			hpi_init_response(&hr->r0, HPI_OBJ_ADAPTER,
> -				HPI_ADAPTER_OPEN,
> -				HPI_ERROR_BAD_ADAPTER_NUMBER);
> +		if (!adapter_present) {
> +			hpi_init_response(&hr->r0, hm->h.object,
> +				hm->h.function, HPI_ERROR_BAD_ADAPTER_NUMBER);

Here you are initializing to different values (from HPI_OBJ_ADAPTER to
hm->h.object, etc).  Is it intentional?


thanks,

Takashi


More information about the Alsa-devel mailing list