From 11f9b11757fb628502b2b901a8ecbc51a632f01e 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 | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/xkb/maprules.c b/xkb/maprules.c index 10cd8754e..2070f289f 100644 --- a/xkb/maprules.c +++ b/xkb/maprules.c @@ -897,12 +897,14 @@ XkbRF_AddRule(XkbRF_RulesPtr rules) if (rules->sz_rules < 1) { rules->sz_rules = 16; rules->num_rules = 0; - rules->rules = calloc(rules->sz_rules, sizeof(XkbRF_RuleRec)); + if (!(rules->rules = calloc(rules->sz_rules, sizeof(XkbRF_RuleRec)))) + 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 = reallocarray(rules->rules, + rules->sz_rules, sizeof(XkbRF_RuleRec)))) + return NULL; } if (!rules->rules) { rules->sz_rules = rules->num_rules = 0; @@ -919,12 +921,14 @@ XkbRF_AddGroup(XkbRF_RulesPtr rules) if (rules->sz_groups < 1) { rules->sz_groups = 16; rules->num_groups = 0; - rules->groups = calloc(rules->sz_groups, sizeof(XkbRF_GroupRec)); + if (!(rules->groups = calloc(rules->sz_groups, sizeof(XkbRF_GroupRec)))) + 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 = reallocarray(rules->groups, + rules->sz_groups, sizeof(XkbRF_GroupRec)))) + return NULL; } if (!rules->groups) { rules->sz_groups = rules->num_groups = 0;