Commit 842e4351c2c97de6051cab6ce36b4a81e709a0e1

Ran Benita 2018-03-12T09:43:55

compose: fix infinite loop in parser on some inputs The parser would enter an infinite loop if an unterminated keysym literal occurs at EOF. Found with the afl fuzzer. Signed-off-by: Ran Benita <ran234@gmail.com>

1
2
3
4
5
6
7
8
9
10
11
12
13
diff --git a/src/compose/parser.c b/src/compose/parser.c
index 40c9470..439d404 100644
--- a/src/compose/parser.c
+++ b/src/compose/parser.c
@@ -144,7 +144,7 @@ skip_more_whitespace_and_comments:
 
     /* LHS Keysym. */
     if (chr(s, '<')) {
-        while (peek(s) != '>' && !eol(s))
+        while (peek(s) != '>' && !eol(s) && !eof(s))
             buf_append(s, next(s));
         if (!chr(s, '>')) {
             scanner_err(s, "unterminated keysym literal");