hw/audio/virtio-snd: fix invalid param check
Commit9b6083465f
("virtio-snd: check for invalid param shift operands") tries to prevent invalid parameters specified by the guest. However, the code is not correct. Change the code so that the parameters format and rate, which are a bit numbers, are compared with the bit size of the data type. Fixes:9b6083465f
("virtio-snd: check for invalid param shift operands") Signed-off-by: Volker Rümelin <vr_qemu@t-online.de> Message-Id: <20240802071805.7123-1-vr_qemu@t-online.de> Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> (cherry picked from commit7d14471a12
) Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
This commit is contained in:
parent
5a97551d73
commit
d73ca551a0
@ -282,12 +282,12 @@ uint32_t virtio_snd_set_pcm_params(VirtIOSound *s,
|
||||
error_report("Number of channels is not supported.");
|
||||
return cpu_to_le32(VIRTIO_SND_S_NOT_SUPP);
|
||||
}
|
||||
if (BIT(params->format) > sizeof(supported_formats) ||
|
||||
if (params->format >= sizeof(supported_formats) * BITS_PER_BYTE ||
|
||||
!(supported_formats & BIT(params->format))) {
|
||||
error_report("Stream format is not supported.");
|
||||
return cpu_to_le32(VIRTIO_SND_S_NOT_SUPP);
|
||||
}
|
||||
if (BIT(params->rate) > sizeof(supported_rates) ||
|
||||
if (params->rate >= sizeof(supported_rates) * BITS_PER_BYTE ||
|
||||
!(supported_rates & BIT(params->rate))) {
|
||||
error_report("Stream rate is not supported.");
|
||||
return cpu_to_le32(VIRTIO_SND_S_NOT_SUPP);
|
||||
|
Loading…
Reference in New Issue
Block a user