(1823) xkb: protect from memory allocation failure
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
This commit is contained in:
		
							parent
							
								
									bd6716f863
								
							
						
					
					
						commit
						44bd9a210e
					
				| 
						 | 
					@ -897,12 +897,14 @@ XkbRF_AddRule(XkbRF_RulesPtr rules)
 | 
				
			||||||
    if (rules->sz_rules < 1) {
 | 
					    if (rules->sz_rules < 1) {
 | 
				
			||||||
        rules->sz_rules = 16;
 | 
					        rules->sz_rules = 16;
 | 
				
			||||||
        rules->num_rules = 0;
 | 
					        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) {
 | 
					    else if (rules->num_rules >= rules->sz_rules) {
 | 
				
			||||||
        rules->sz_rules *= 2;
 | 
					        rules->sz_rules *= 2;
 | 
				
			||||||
        rules->rules = reallocarray(rules->rules,
 | 
					        if (!(rules->rules = reallocarray(rules->rules,
 | 
				
			||||||
                                    rules->sz_rules, sizeof(XkbRF_RuleRec));
 | 
					                                    rules->sz_rules, sizeof(XkbRF_RuleRec))))
 | 
				
			||||||
 | 
					            return NULL;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (!rules->rules) {
 | 
					    if (!rules->rules) {
 | 
				
			||||||
        rules->sz_rules = rules->num_rules = 0;
 | 
					        rules->sz_rules = rules->num_rules = 0;
 | 
				
			||||||
| 
						 | 
					@ -919,12 +921,14 @@ XkbRF_AddGroup(XkbRF_RulesPtr rules)
 | 
				
			||||||
    if (rules->sz_groups < 1) {
 | 
					    if (rules->sz_groups < 1) {
 | 
				
			||||||
        rules->sz_groups = 16;
 | 
					        rules->sz_groups = 16;
 | 
				
			||||||
        rules->num_groups = 0;
 | 
					        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) {
 | 
					    else if (rules->num_groups >= rules->sz_groups) {
 | 
				
			||||||
        rules->sz_groups *= 2;
 | 
					        rules->sz_groups *= 2;
 | 
				
			||||||
        rules->groups = reallocarray(rules->groups,
 | 
					        if (!(rules->groups = reallocarray(rules->groups,
 | 
				
			||||||
                                     rules->sz_groups, sizeof(XkbRF_GroupRec));
 | 
					                                     rules->sz_groups, sizeof(XkbRF_GroupRec))))
 | 
				
			||||||
 | 
					            return NULL;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (!rules->groups) {
 | 
					    if (!rules->groups) {
 | 
				
			||||||
        rules->sz_groups = rules->num_groups = 0;
 | 
					        rules->sz_groups = rules->num_groups = 0;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue