From patchwork Thu Mar 17 21:58:59 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Leann Ogasawara X-Patchwork-Id: 87438 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from chlorine.canonical.com (chlorine.canonical.com [91.189.94.204]) by ozlabs.org (Postfix) with ESMTP id A99FFB6FE1 for ; Fri, 18 Mar 2011 08:59:09 +1100 (EST) Received: from localhost ([127.0.0.1] helo=chlorine.canonical.com) by chlorine.canonical.com with esmtp (Exim 4.71) (envelope-from ) id 1Q0LDk-0008Ng-Mp; Thu, 17 Mar 2011 21:59:04 +0000 Received: from adelie.canonical.com ([91.189.90.139]) by chlorine.canonical.com with esmtp (Exim 4.71) (envelope-from ) id 1Q0LDi-0008NR-TY for kernel-team@lists.ubuntu.com; Thu, 17 Mar 2011 21:59:02 +0000 Received: from youngberry.canonical.com ([91.189.89.112]) by adelie.canonical.com with esmtp (Exim 4.71 #1 (Debian)) id 1Q0LDi-0000Xc-Rz for ; Thu, 17 Mar 2011 21:59:02 +0000 Received: from c-76-105-148-120.hsd1.or.comcast.net ([76.105.148.120] helo=[192.168.1.4]) by youngberry.canonical.com with esmtpsa (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1Q0LDi-00018b-GD for kernel-team@lists.ubuntu.com; Thu, 17 Mar 2011 21:59:02 +0000 Subject: [CVE-2010-4527 Hardy] sound: Prevent buffer overflow in OSS load_mixer_volumes, CVE-2010-4527 From: Leann Ogasawara To: kernel-team Date: Thu, 17 Mar 2011 14:58:59 -0700 Message-ID: <1300399139.1813.18.camel@emiko> Mime-Version: 1.0 X-Mailer: Evolution 2.32.2 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.13 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: kernel-team-bounces@lists.ubuntu.com Errors-To: kernel-team-bounces@lists.ubuntu.com The following changes since commit 7fec2f29a52bd5c07921df6e0dc443de7ef5c9f4: Brad Figg (1): UBUNTU: Ubuntu-2.6.24-29.88 are available in the git repository at: git://kernel.ubuntu.com/ogasawara/ubuntu-hardy.git CVE-2010-4527 Dan Rosenberg (1): sound: Prevent buffer overflow in OSS load_mixer_volumes, CVE-2010-4527 sound/oss/soundcard.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) From 757fccef9f476beb37e1571a193c309c4c71f6b1 Mon Sep 17 00:00:00 2001 From: Dan Rosenberg Date: Sat, 25 Dec 2010 16:23:40 -0500 Subject: [PATCH] sound: Prevent buffer overflow in OSS load_mixer_volumes, CVE-2010-4527 CVE-2010-4527 BugLink: http://bugs.launchpad.net/bugs/737073 The load_mixer_volumes() function, which can be triggered by unprivileged users via the SOUND_MIXER_SETLEVELS ioctl, is vulnerable to a buffer overflow. Because the provided "name" argument isn't guaranteed to be NULL terminated at the expected 32 bytes, it's possible to overflow past the end of the last element in the mixer_vols array. Further exploitation can result in an arbitrary kernel write (via subsequent calls to load_mixer_volumes()) leading to privilege escalation, or arbitrary kernel reads via get_mixer_levels(). In addition, the strcmp() may leak bytes beyond the mixer_vols array. Signed-off-by: Dan Rosenberg Cc: stable Signed-off-by: Takashi Iwai (cherry picked from commit d81a12bc29ae4038770e05dce4ab7f26fd5880fb) Signed-off-by: Leann Ogasawara Acked-by: Tim Gardner Acked-by: Stefan Bader --- sound/oss/soundcard.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sound/oss/soundcard.c b/sound/oss/soundcard.c index a9c23b2..eac3c00 100644 --- a/sound/oss/soundcard.c +++ b/sound/oss/soundcard.c @@ -87,7 +87,7 @@ int *load_mixer_volumes(char *name, int *levels, int present) int i, n; for (i = 0; i < num_mixer_volumes; i++) { - if (strcmp(name, mixer_vols[i].name) == 0) { + if (strncmp(name, mixer_vols[i].name, 32) == 0) { if (present) mixer_vols[i].num = i; return mixer_vols[i].levels; @@ -99,7 +99,7 @@ int *load_mixer_volumes(char *name, int *levels, int present) } n = num_mixer_volumes++; - strcpy(mixer_vols[n].name, name); + strncpy(mixer_vols[n].name, name, 32); if (present) mixer_vols[n].num = n;