lkml.org 
[lkml]   [2017]   [Nov]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 088/193] ALSA: usb-audio: Add sanity checks to FE parser
    Date
    4.14-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Takashi Iwai <tiwai@suse.de>

    commit d937cd6790a2bef2d07b500487646bd794c039bb upstream.

    When the usb-audio descriptor contains the malformed feature unit
    description with a too short length, the driver may access
    out-of-bounds. Add a sanity check of the header size at the beginning
    of parse_audio_feature_unit().

    Fixes: 23caaf19b11e ("ALSA: usb-mixer: Add support for Audio Class v2.0")
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    sound/usb/mixer.c | 12 ++++++++++++
    1 file changed, 12 insertions(+)

    --- a/sound/usb/mixer.c
    +++ b/sound/usb/mixer.c
    @@ -1469,6 +1469,12 @@ static int parse_audio_feature_unit(stru
    __u8 *bmaControls;

    if (state->mixer->protocol == UAC_VERSION_1) {
    + if (hdr->bLength < 7) {
    + usb_audio_err(state->chip,
    + "unit %u: invalid UAC_FEATURE_UNIT descriptor\n",
    + unitid);
    + return -EINVAL;
    + }
    csize = hdr->bControlSize;
    if (!csize) {
    usb_audio_dbg(state->chip,
    @@ -1486,6 +1492,12 @@ static int parse_audio_feature_unit(stru
    }
    } else {
    struct uac2_feature_unit_descriptor *ftr = _ftr;
    + if (hdr->bLength < 6) {
    + usb_audio_err(state->chip,
    + "unit %u: invalid UAC_FEATURE_UNIT descriptor\n",
    + unitid);
    + return -EINVAL;
    + }
    csize = 4;
    channels = (hdr->bLength - 6) / 4 - 1;
    bmaControls = ftr->bmaControls;

    \
     
     \ /
      Last update: 2017-11-28 12:25    [W:4.024 / U:0.120 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site