]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ALSA: wavefront: Fix integer overflow in sample size validation
authorJunrui Luo <moonafterrain@outlook.com>
Tue, 16 Dec 2025 11:06:27 +0000 (06:06 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 19 Jan 2026 12:10:06 +0000 (13:10 +0100)
[ Upstream commit 0c4a13ba88594fd4a27292853e736c6b4349823d ]

The wavefront_send_sample() function has an integer overflow issue
when validating sample size. The header->size field is u32 but gets
cast to int for comparison with dev->freemem

Fix by using unsigned comparison to avoid integer overflow.

Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Cc: stable@vger.kernel.org
Signed-off-by: Junrui Luo <moonafterrain@outlook.com>
Link: https://patch.msgid.link/SYBPR01MB7881B47789D1B060CE8BF4C3AFC2A@SYBPR01MB7881.ausprd01.prod.outlook.com
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
sound/isa/wavefront/wavefront_synth.c

index ab4017918ba8d507b1e4cbd361e2497f4908af4e..b4d2788ff4780d29c2161ed5abc279e2a45a0648 100644 (file)
@@ -952,9 +952,9 @@ wavefront_send_sample (snd_wavefront_t *dev,
        if (header->size) {
                dev->freemem = wavefront_freemem (dev);
 
-               if (dev->freemem < (int)header->size) {
+               if (dev->freemem < 0 || dev->freemem < header->size) {
                        dev_err(dev->card->dev,
-                               "insufficient memory to load %d byte sample.\n",
+                               "insufficient memory to load %u byte sample.\n",
                                header->size);
                        return -ENOMEM;
                }