Fix out-of-bound access

IsLetterGroup looks for heading \0, so the padding also needs to include
an \0.
This commit is contained in:
Samuel Thibault
2022-06-09 11:26:17 +02:00
parent 24e1eaa0cc
commit eed7db1575
+6 -4
View File
@@ -3010,12 +3010,14 @@ int Lookup(Translator *tr, const char *word, char *ph_out)
if (flags[0] & FLAG_TEXTMODE) {
say_as = option_sayas;
option_sayas = 0; // don't speak replacement word as letter names
// NOTE: TranslateRoman checks text[-2], so pad the start of text to prevent
// NOTE: TranslateRoman checks text[-2] and IsLetterGroup looks
// for a heading \0, so pad the start of text to prevent
// it reading data on the stack.
text[0] = ' ';
text[0] = 0;
text[1] = ' ';
strncpy0(text+2, word1, sizeof(text)-2);
flags0 = TranslateWord(tr, text+2, NULL, NULL);
text[2] = ' ';
strncpy0(text+3, word1, sizeof(text)-3);
flags0 = TranslateWord(tr, text+3, NULL, NULL);
strcpy(ph_out, word_phonemes);
option_sayas = say_as;
}