Commit 7e6d942a4f9ffc60b11bc62354b980340f181074

Ran Benita 2021-04-02T15:00:46

compose: fix max compose nodes check Signed-off-by: Ran Benita <ran@unusedvar.com>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
diff --git a/src/compose/parser.c b/src/compose/parser.c
index a47ae4b..08018f2 100644
--- a/src/compose/parser.c
+++ b/src/compose/parser.c
@@ -336,9 +336,10 @@ add_production(struct xkb_compose_table *table, struct scanner *s,
     uint16_t *pptr = NULL;
     struct compose_node *node = NULL;
 
-    if (darray_size(table->nodes) + 1 == MAX_COMPOSE_NODES)
+    /* Warn before potentially going over the limit, discard silently after. */
+    if (darray_size(table->nodes) + production->len + MAX_LHS_LEN > MAX_COMPOSE_NODES)
         scanner_warn(s, "too many sequences for one Compose file; will ignore further lines");
-    if (darray_size(table->nodes) >= MAX_COMPOSE_NODES)
+    if (darray_size(table->nodes) + production->len >= MAX_COMPOSE_NODES)
         return;
 
     /*