speakup: Avoid crash on very long word
authorSamuel Thibault <samuel.thibault@ens-lyon.org>
Sat, 23 Mar 2024 16:48:43 +0000 (17:48 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 11 Apr 2024 12:32:53 +0000 (14:32 +0200)
In case a console is set up really large and contains a really long word
(> 256 characters), we have to stop before the length of the word buffer.

Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
Fixes: c6e3fd22cd538 ("Staging: add speakup to the staging directory")
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/20240323164843.1426997-1-samuel.thibault@ens-lyon.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/accessibility/speakup/main.c

index 1fbc9b921c4fccbff6bb64981ce678efd1841890..736c2eb8c0f37d58529ea500c33b8167ad9d248e 100644 (file)
@@ -574,7 +574,7 @@ static u_long get_word(struct vc_data *vc)
        }
        attr_ch = get_char(vc, (u_short *)tmp_pos, &spk_attr);
        buf[cnt++] = attr_ch;
-       while (tmpx < vc->vc_cols - 1) {
+       while (tmpx < vc->vc_cols - 1 && cnt < sizeof(buf) - 1) {
                tmp_pos += 2;
                tmpx++;
                ch = get_char(vc, (u_short *)tmp_pos, &temp);