From: Dan Rosenberg <drosenberg@vsecurity.com>
Date: Thu, 17 Mar 2011 22:32:24 +0000 (-0400)
Subject: ALSA: sound/pci/asihpi: check adapter index in hpi_ioctl
X-Git-Tag: v2.6.39-rc1~424^2^2
X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=4a122c10f;p=users%2Fjedix%2Flinux-maple.git

ALSA: 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 <drosenberg@vsecurity.com>
Cc: <stable@kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
---

diff --git a/sound/pci/asihpi/hpioctl.c b/sound/pci/asihpi/hpioctl.c
index 26186be638b13..cd624f13ff8e4 100644
--- a/sound/pci/asihpi/hpioctl.c
+++ b/sound/pci/asihpi/hpioctl.c
@@ -156,6 +156,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 = res_max_size;
 	if (hm->h.object == HPI_OBJ_SUBSYSTEM) {