From 7e6d942a4f9ffc60b11bc62354b980340f181074 Mon Sep 17 00:00:00 2001 From: Ran Benita Date: Fri, 2 Apr 2021 15:00:46 +0300 Subject: compose: fix max compose nodes check Signed-off-by: Ran Benita --- src/compose/parser.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src') 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; /* -- cgit v1.2.1