ALSA: snd-usb: avoid dividing by zero on invalid input
authorNicolai Krakowiak <nicolai.krakowiak@gmail.com>
Thu, 4 Aug 2011 13:56:27 +0000 (15:56 +0200)
committerTakashi Iwai <tiwai@suse.de>
Thu, 4 Aug 2011 14:24:06 +0000 (16:24 +0200)
Signed-off-by: Nicolai Krakowiak <nicolai.krakowiak@gmail.com>
Acked-by: Daniel Mack <zonque@gmail.com>
Acked-by: Clemens Ladisch <clemens@ladisch.de>
Cc: stable@kernel.org
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/usb/mixer.c

index c22fa76e363ae5699e9885cc548fdc28d25607b3..ee9aa087d8b5960e46bede2f58c2f3d1e91f6af1 100644 (file)
@@ -1191,6 +1191,11 @@ static int parse_audio_feature_unit(struct mixer_build *state, int unitid, void
 
        if (state->mixer->protocol == UAC_VERSION_1) {
                csize = hdr->bControlSize;
+               if (!csize) {
+                       snd_printdd(KERN_ERR "usbaudio: unit %u: "
+                                   "invalid bControlSize == 0\n", unitid);
+                       return -EINVAL;
+               }
                channels = (hdr->bLength - 7) / csize - 1;
                bmaControls = hdr->bmaControls;
        } else {