提交 22eb49b2 编写于 作者: S Samuel Thibault 提交者: Yang Yingliang

staging/speakup: fix get_word non-space look-ahead

commit 9d32c0cde4e2d1343dfb88a67b2ec6397705b32b upstream.

get_char was erroneously given the address of the pointer to the text
instead of the address of the text, thus leading to random crashes when
the user requests speaking a word while the current position is on a space
character and say_word_ctl is not enabled.

Reported-on: https://github.com/bytefire/speakup/issues/1Reported-by: NKirk Reiser <kirk@reisers.ca>
Reported-by: NJanina Sajka <janina@rednote.net>
Reported-by: NAlexandr Epaneshnikov <aarnaarn2@gmail.com>
Reported-by: NGregory Nowak <greg@gregn.net>
Reported-by: Ndeedra waters <deedra@the-brannons.com>
Signed-off-by: NSamuel Thibault <samuel.thibault@ens-lyon.org>
Tested-by: NAlexandr Epaneshnikov <aarnaarn2@gmail.com>
Tested-by: NGregory Nowak <greg@gregn.net>
Tested-by: NMichael Taboada <michael@michaels.world>
Cc: stable <stable@vger.kernel.org>
Link: https://lore.kernel.org/r/20200306003047.thijtmqrnayd3dmw@functionSigned-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
上级 169c67aa
......@@ -561,7 +561,7 @@ static u_long get_word(struct vc_data *vc)
return 0;
} else if (tmpx < vc->vc_cols - 2 &&
(ch == SPACE || ch == 0 || (ch < 0x100 && IS_WDLM(ch))) &&
get_char(vc, (u_short *)&tmp_pos + 1, &temp) > SPACE) {
get_char(vc, (u_short *)tmp_pos + 1, &temp) > SPACE) {
tmp_pos += 2;
tmpx++;
} else {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册