terminal: Don't crash when selecting non-ascii characters

So it turns out if you cat /dev/urandom and drag select in the mess
you can crash weston-terminal.  There may also be more legitimate
ways of doing this.

The reason is that isalpha() and isdigit() only accept values that
fit within an unsigned char or are EOF.

By treating values < 0 the same as values > 127 we prevent this crash.

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
This commit is contained in:
Derek Foreman 2015-09-02 16:21:54 -05:00 committed by Pekka Paalanen
parent 617933840b
commit 7978bc82dd

View file

@ -2579,7 +2579,7 @@ static int wordsep(int ch)
{
const char extra[] = "-,./?%&#:_=+@~";
if (ch > 127)
if (ch > 127 || ch < 0)
return 1;
return ch == 0 || !(isalpha(ch) || isdigit(ch) || strchr(extra, ch));