ALSA: usb-audio: Fix uninitialized variable at __uac_clock_find_source()
authorTakashi Iwai <tiwai@suse.de>
Thu, 20 May 2021 12:37:42 +0000 (14:37 +0200)
committerTakashi Iwai <tiwai@suse.de>
Fri, 21 May 2021 14:16:21 +0000 (16:16 +0200)
The cur variable indicating the currently selected clock source can be
theoretically used as uninitialized after the recent commit
481f17c41803 ("ALSA: usb-audio: Handle error for the current selector
gracefully").  For addressing it, initialize it before use.

Also, one place seems setting 0 to a wrong variable ret, instead of
cur; otherwise it makes little sense.  Since the initialization is
done beforehand, we can get rid of this line, too.

Fixes: 481f17c41803 ("ALSA: usb-audio: Handle error for the current selector gracefully")
Reported-by: Colin Ian King <colin.king@canonical.com>
Link: https://lore.kernel.org/r/4b261d68-f53f-240d-2d8a-2f88b337849d@canonical.com
Link: https://lore.kernel.org/r/s5hfsyhh97t.wl-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/usb/clock.c

index 772478c..0afae83 100644 (file)
@@ -290,6 +290,7 @@ static int __uac_clock_find_source(struct snd_usb_audio *chip,
                pins = GET_VAL(selector, proto, bNrInPins);
                clock_id = GET_VAL(selector, proto, bClockID);
                sources = GET_VAL(selector, proto, baCSourceID);
+               cur = 0;
 
                if (pins == 1) {
                        ret = 1;
@@ -314,7 +315,6 @@ static int __uac_clock_find_source(struct snd_usb_audio *chip,
 
                        if (!chip->autoclock)
                                return -EINVAL;
-                       ret = 0;
                        goto find_others;
                }