[alsa-devel] Patch "ALSA: info: Check for integer overflow in snd_info_entry_write()" has been added to the 3.18-stable tree

gregkh at linuxfoundation.org gregkh at linuxfoundation.org
Thu Aug 16 12:08:01 CEST 2018


This is a note to let you know that I've just added the patch titled

    ALSA: info: Check for integer overflow in snd_info_entry_write()

to the 3.18-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     alsa-info-check-for-integer-overflow-in-snd_info_entry_write.patch
and it can be found in the queue-3.18 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable at vger.kernel.org> know about it.


>From erickreyes at google.com  Thu Aug 16 12:07:22 2018
From: Erick Reyes <erickreyes at google.com>
Date: Wed, 15 Aug 2018 17:55:48 -0700
Subject: ALSA: info: Check for integer overflow in snd_info_entry_write()
To: stable at vger.kernel.org
Cc: linux-kernel at vger.kernel.org, Jaroslav Kysela <perex at perex.cz>, Takashi Iwai <tiwai at suse.com>, kernel-team at android.com, Vinod Koul <vkoul at kernel.org>, Joe Perches <joe at perches.com>, Al Viro <viro at zeniv.linux.org.uk>, alsa-devel at alsa-project.org, Erick Reyes <erickreyes at google.com>, Siqi Lin <siqilin at google.com>
Message-ID: <20180816005548.151269-1-erickreyes at google.com>

From: Erick Reyes <erickreyes at google.com>

Commit 4adb7bcbcb69 ("ALSA: core: Use seq_file for text proc file
reads") heavily refactored ALSA procfs and fixed the overflow as
a side-effect, so this fix only applies to kernels < 4.2 and
there is no upstream equivalent

snd_info_entry_write() resizes the buffer with an unsigned long
size argument that gets truncated because resize_info_buffer()
takes the size parameter as an unsigned int. On 64-bit kernels,
this causes the following copy_to_user() to write out-of-bounds
if (pos + count) can't be represented by an unsigned int.

Signed-off-by: Siqi Lin <siqilin at google.com>
Signed-off-by: Erick Reyes <erickreyes at google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
---
 sound/core/info.c |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

--- a/sound/core/info.c
+++ b/sound/core/info.c
@@ -253,6 +253,7 @@ static ssize_t snd_info_entry_write(stru
 	struct snd_info_buffer *buf;
 	ssize_t size = 0;
 	loff_t pos;
+	unsigned long realloc_size;
 
 	data = file->private_data;
 	if (snd_BUG_ON(!data))
@@ -261,7 +262,8 @@ static ssize_t snd_info_entry_write(stru
 	pos = *offset;
 	if (pos < 0 || (long) pos != pos || (ssize_t) count < 0)
 		return -EIO;
-	if ((unsigned long) pos + (unsigned long) count < (unsigned long) pos)
+	realloc_size = (unsigned long) pos + (unsigned long) count;
+	if (realloc_size < (unsigned long) pos || realloc_size > UINT_MAX)
 		return -EIO;
 	switch (entry->content) {
 	case SNDRV_INFO_CONTENT_TEXT:


Patches currently in stable-queue which might be from erickreyes at google.com are

queue-3.18/alsa-info-check-for-integer-overflow-in-snd_info_entry_write.patch


More information about the Alsa-devel mailing list