i built brltty-4.5 and got these warnings: * QA Notice: Package triggers severe warnings which indicate that it * may exhibit random runtime failures. * ./speech.c:78:36: warning: array subscript is above array bounds [-Warray-bounds] * ./speech.c:102:41: warning: array subscript is above array bounds [-Warray-bounds] and indeed, if we look at the code, it's doing just that. ./Drivers/Speech/MultiBraille/speech.c: static unsigned char latin2cp437[128] = {...}; ... static void spk_say (..., const unsigned char *buffer, ...) { ... unsigned char c; ... c = buffer[i]; if (c >= 128) c = latin2cp437[c]; ... fairly obvious -- the array is 128 bytes long, but we only ever index it with values that are 128 or bigger. the other speech.c files have similar errors on these latin2cp437 arrays. i'm guessing that the code should actually be: if (c >= 128) c = latin2cp437[c - 128]; but i really have no idea.
This was fixed in the brltty svn repo today. There was a second range-checking issue that was also fixed. I'll apply both of these shortly. I assume you found this with -Wall in CFLAGS?
Fixed in app-accessibility/brltty-4.5-r2.
(In reply to Chris Brannon from comment #1) i don't think you need -Wall for that. just optimization (-O2) and security warnings (the latter of which we enable by default in Gentoo's gcc).