ALSA: scarlett2: Add check for config_item presence
authorGeoffrey D. Bennett <g@b4.vu>
Sun, 24 Dec 2023 19:25:10 +0000 (05:55 +1030)
committerTakashi Iwai <tiwai@suse.de>
Fri, 29 Dec 2023 14:41:22 +0000 (15:41 +0100)
Update scarlett2_usb_get_config() and scarlett2_usb_set_config() to
make sure that the config_item_num is valid for the device.

Signed-off-by: Geoffrey D. Bennett <g@b4.vu>
Link: https://lore.kernel.org/r/b0572b23291ffd1b208f21d298adaf4d9f1fe4bc.1703444932.git.g@b4.vu
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/usb/mixer_scarlett2.c

index 74bcecbd69231cc738a1298c462ad768c08cd635..ad92c3d1f8f5264526b17c3e1e740beedf79ba5b 100644 (file)
@@ -1528,6 +1528,12 @@ static int scarlett2_usb_get_config(
        u8 *buf_8;
        u8 value;
 
+       /* Check that the configuration item is present in the
+        * configuration set used by this device
+        */
+       if (!config_item->offset)
+               return -EFAULT;
+
        /* For byte-sized parameters, retrieve directly into buf */
        if (config_item->size >= 8) {
                size = config_item->size / 8 * count;
@@ -1594,6 +1600,12 @@ static int scarlett2_usb_set_config(
        int offset, size;
        int err;
 
+       /* Check that the configuration item is present in the
+        * configuration set used by this device
+        */
+       if (!config_item->offset)
+               return -EFAULT;
+
        /* Cancel any pending NVRAM save */
        cancel_delayed_work_sync(&private->work);