mirror of
https://github.com/rhasspy/espeak-ng.git
synced 2026-10-31 05:35:35 +00:00
Fix out-of-bound access
IsLetterGroup looks for heading \0, so the padding also needs to include an \0.
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user