From 784c0397e5e04b8bd657ea777b7fcbda359bf0b9 Mon Sep 17 00:00:00 2001 From: "Enrico Weigelt, metux IT consult" Date: Mon, 24 Feb 2025 13:58:49 +0100 Subject: [PATCH] xkb: protect from memory allocation failure Signed-off-by: Enrico Weigelt, metux IT consult --- xkb/maprules.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/xkb/maprules.c b/xkb/maprules.c index 529650363..82b07a5a9 100644 --- a/xkb/maprules.c +++ b/xkb/maprules.c @@ -896,11 +896,15 @@ XkbRF_AddRule(XkbRF_RulesPtr rules) rules->sz_rules = 16; rules->num_rules = 0; rules->rules = calloc(rules->sz_rules, sizeof(XkbRF_RuleRec)); + if (!(rules->rules)) + return NULL; } else if (rules->num_rules >= rules->sz_rules) { rules->sz_rules *= 2; rules->rules = reallocarray(rules->rules, rules->sz_rules, sizeof(XkbRF_RuleRec)); + if (!(rules->rules)) + return NULL; } if (!rules->rules) { rules->sz_rules = rules->num_rules = 0; @@ -918,11 +922,15 @@ XkbRF_AddGroup(XkbRF_RulesPtr rules) rules->sz_groups = 16; rules->num_groups = 0; rules->groups = calloc(rules->sz_groups, sizeof(XkbRF_GroupRec)); + if (!(rules->groups)) + return NULL; } else if (rules->num_groups >= rules->sz_groups) { rules->sz_groups *= 2; rules->groups = reallocarray(rules->groups, rules->sz_groups, sizeof(XkbRF_GroupRec)); + if (!(rules->groups)) + return NULL; } if (!rules->groups) { rules->sz_groups = rules->num_groups = 0;