Re: [PATCH v3] ALSA: usb-mixer: us16x08: validate meter packet indices

From: Takashi Iwai
Date: Wed Dec 17 2025 - 04:15:31 EST


On Wed, 17 Dec 2025 03:46:30 +0100,
Shipei Qu wrote:
>
> get_meter_levels_from_urb() parses the 64-byte meter packets sent by
> the device and fills the per-channel arrays meter_level[],
> comp_level[] and master_level[] in struct snd_us16x08_meter_store.
>
> Currently the function derives the channel index directly from the
> meter packet (MUB2(meter_urb, s) - 1) and uses it to index those
> arrays without validating the range. If the packet contains a
> negative or out-of-range channel number, the driver may write past
> the end of these arrays.
>
> Introduce a local channel variable and validate it before updating the
> arrays. We reject negative indices, limit meter_level[] and
> comp_level[] to SND_US16X08_MAX_CHANNELS, and guard master_level[]
> updates with ARRAY_SIZE(master_level).
>
> Reported-by: DARKNAVY (@DarkNavyOrg) <vr@xxxxxxxxxxxx>
> Signed-off-by: Shipei Qu <qu@xxxxxxxxxxxx>

Applied now. Thanks.


Takashi