2011-03-17 22:32:32

by Dan Rosenberg

[permalink] [raw]
Subject: [PATCH] sound/pci/asihpi: check adapter index in hpi_ioctl

The user-supplied index into the adapters array needs to be checked, or
an out-of-bounds kernel pointer could be accessed and used, leading to
potentially exploitable memory corruption.

Signed-off-by: Dan Rosenberg <[email protected]>
---
sound/pci/asihpi/hpioctl.c | 5 +++++
1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/sound/pci/asihpi/hpioctl.c b/sound/pci/asihpi/hpioctl.c
index 22dbd91..448dd01 100644
--- a/sound/pci/asihpi/hpioctl.c
+++ b/sound/pci/asihpi/hpioctl.c
@@ -155,6 +155,11 @@ long asihpi_hpi_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
goto out;
}

+ if (hm->h.adapter_index >= HPI_MAX_ADAPTERS) {
+ err = -EINVAL;
+ goto out;
+ }
+
pa = &adapters[hm->h.adapter_index];
hr->h.size = 0;
if (hm->h.object == HPI_OBJ_SUBSYSTEM) {


2011-03-17 22:54:41

by Greg KH

[permalink] [raw]
Subject: Re: [stable] [PATCH] sound/pci/asihpi: check adapter index in hpi_ioctl

On Thu, Mar 17, 2011 at 06:32:24PM -0400, Dan Rosenberg wrote:
> The user-supplied index into the adapters array needs to be checked, or
> an out-of-bounds kernel pointer could be accessed and used, leading to
> potentially exploitable memory corruption.
>
> Signed-off-by: Dan Rosenberg <[email protected]>
> ---
> sound/pci/asihpi/hpioctl.c | 5 +++++
> 1 files changed, 5 insertions(+), 0 deletions(-)

<formletter>

This is not the correct way to submit patches for inclusion in the
stable kernel tree. Please read Documentation/stable_kernel_rules.txt
for how to do this properly.

</formletter>

thanks,

greg k-h

2011-03-18 06:55:16

by Takashi Iwai

[permalink] [raw]
Subject: Re: [PATCH] sound/pci/asihpi: check adapter index in hpi_ioctl

At Thu, 17 Mar 2011 18:32:24 -0400,
Dan Rosenberg wrote:
>
> The user-supplied index into the adapters array needs to be checked, or
> an out-of-bounds kernel pointer could be accessed and used, leading to
> potentially exploitable memory corruption.
>
> Signed-off-by: Dan Rosenberg <[email protected]>

Applied now (with Cc to stable kernel). Thanks.


Takashi

> ---
> sound/pci/asihpi/hpioctl.c | 5 +++++
> 1 files changed, 5 insertions(+), 0 deletions(-)
>
> diff --git a/sound/pci/asihpi/hpioctl.c b/sound/pci/asihpi/hpioctl.c
> index 22dbd91..448dd01 100644
> --- a/sound/pci/asihpi/hpioctl.c
> +++ b/sound/pci/asihpi/hpioctl.c
> @@ -155,6 +155,11 @@ long asihpi_hpi_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
> goto out;
> }
>
> + if (hm->h.adapter_index >= HPI_MAX_ADAPTERS) {
> + err = -EINVAL;
> + goto out;
> + }
> +
> pa = &adapters[hm->h.adapter_index];
> hr->h.size = 0;
> if (hm->h.object == HPI_OBJ_SUBSYSTEM) {
>
>