xkbcomp: use memcpy over strncpy to avoid analyzer warnings
authorPeter Hutterer <peter.hutterer@who-t.net>
Mon, 29 Mar 2021 06:23:28 +0000 (16:23 +1000)
committerRan Benita <ran@unusedvar.com>
Mon, 29 Mar 2021 22:34:33 +0000 (01:34 +0300)
The target buffer is 7 bytes long, null-termination is optional (as the comment
already suggests). Coverity is unhappy about this though so let's use memset and
memcpy instead.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
src/xkbcomp/action.c

index 605f159..e2d4c40 100644 (file)
@@ -700,15 +700,16 @@ HandlePrivate(struct xkb_context *ctx, const struct xkb_mod_set *mods,
 
             str = xkb_atom_text(ctx, val);
             len = strlen(str);
-            if (len < 1 || len > 7) {
+            if (len < 1 || len > sizeof(act->data)) {
                 log_warn(ctx,
-                         "A private action has 7 data bytes; "
-                         "Illegal data ignored\n");
+                         "A private action has %ld data bytes; "
+                         "Illegal data ignored\n", sizeof(act->data));
                 return false;
             }
 
             /* act->data may not be null-terminated, this is intentional */
-            strncpy((char *) act->data, str, sizeof(act->data));
+            memset(act->data, 0, sizeof(act->data));
+            memcpy(act->data, str, len);
             return true;
         }
         else {