Fix NULL after deref issue detected by static analysis tool
[platform/upstream/libxkbcommon.git] / src / xkbcomp / symbols.c
index 20eebeb..58f73e6 100644 (file)
@@ -569,6 +569,9 @@ HandleIncludeSymbols(SymbolsInfo *info, IncludeStmt *include)
 {
     SymbolsInfo included;
 
+    if (!include)
+        return false;
+
     InitSymbolsInfo(&included, info->keymap, info->actions, &info->mods);
     included.name = include->stmt;
     include->stmt = NULL;
@@ -715,8 +718,13 @@ AddSymbolsToKey(SymbolsInfo *info, KeyInfo *keyi, ExprDef *arrayNdx,
 
         sym_index = darray_item(value->keysym_list.symsMapIndex, i);
         leveli->num_syms = darray_item(value->keysym_list.symsNumEntries, i);
-        if (leveli->num_syms > 1)
+        if (leveli->num_syms > 1) {
             leveli->u.syms = calloc(leveli->num_syms, sizeof(*leveli->u.syms));
+            if (!leveli->u.syms) {
+                log_err(info->ctx, "Failed to allocate memory for leveli->u.syms\n");
+                continue;
+            }
+        }
 
         for (unsigned j = 0; j < leveli->num_syms; j++) {
             xkb_keysym_t keysym = darray_item(value->keysym_list.syms,
@@ -1491,6 +1499,10 @@ CopySymbolsDefToKeymap(struct xkb_keymap *keymap, SymbolsInfo *info,
     }
 
     key->groups = calloc(key->num_groups, sizeof(*key->groups));
+    if (!key->groups) {
+        log_err(info->ctx, "Failed to allocate memory for key->groups\n");
+        return false;
+    }
 
     /* Find and assign the groups' types in the keymap. */
     darray_enumerate(i, groupi, keyi->groups) {