Commit 1f3666915bc31a1133f2d53d0f81c03df7241bad

Ran Benita 2018-08-01T12:25:18

Merge pull request #66 from whot/master Coverity fixes (one real bug)

diff --git a/src/text.c b/src/text.c
index 462d919..ec8bdf8 100644
--- a/src/text.c
+++ b/src/text.c
@@ -254,7 +254,7 @@ const char *
 ModMaskText(struct xkb_context *ctx, const struct xkb_mod_set *mods,
             xkb_mod_mask_t mask)
 {
-    char buf[1024];
+    char buf[1024] = {0};
     size_t pos = 0;
     xkb_mod_index_t i;
     const struct xkb_mod *mod;
diff --git a/src/xkbcomp/action.c b/src/xkbcomp/action.c
index 5f1fd65..f99a850 100644
--- a/src/xkbcomp/action.c
+++ b/src/xkbcomp/action.c
@@ -705,6 +705,7 @@ HandlePrivate(struct xkb_context *ctx, const struct xkb_mod_set *mods,
                 return false;
             }
 
+            /* act->data may not be null-terminated, this is intentional */
             strncpy((char *) act->data, str, sizeof(act->data));
             return true;
         }
diff --git a/src/xkbcomp/ast-build.c b/src/xkbcomp/ast-build.c
index 9c6ccd4..2de9e61 100644
--- a/src/xkbcomp/ast-build.c
+++ b/src/xkbcomp/ast-build.c
@@ -240,7 +240,7 @@ ExprAppendMultiKeysymList(ExprDef *expr, ExprDef *append)
     darray_append(expr->keysym_list.symsNumEntries, numEntries);
     darray_concat(expr->keysym_list.syms, append->keysym_list.syms);
 
-    FreeStmt((ParseCommon *) &append);
+    FreeStmt((ParseCommon *) append);
 
     return expr;
 }
diff --git a/src/xkbcomp/keycodes.c b/src/xkbcomp/keycodes.c
index 7f5955e..491da51 100644
--- a/src/xkbcomp/keycodes.c
+++ b/src/xkbcomp/keycodes.c
@@ -596,14 +596,14 @@ CopyKeyAliasesToKeymap(struct xkb_keymap *keymap, KeyNamesInfo *info)
         key_aliases = calloc(num_key_aliases, sizeof(*key_aliases));
         if (!key_aliases)
             return false;
-    }
 
-    i = 0;
-    darray_foreach(alias, info->aliases) {
-        if (alias->real != XKB_ATOM_NONE) {
-            key_aliases[i].alias = alias->alias;
-            key_aliases[i].real = alias->real;
-            i++;
+        i = 0;
+        darray_foreach(alias, info->aliases) {
+            if (alias->real != XKB_ATOM_NONE) {
+                key_aliases[i].alias = alias->alias;
+                key_aliases[i].real = alias->real;
+                i++;
+            }
         }
     }