fix a buffer overflow
[libpicofe.git] / input.c
diff --git a/input.c b/input.c
index dc8bedd..2c34a79 100644 (file)
--- a/input.c
+++ b/input.c
@@ -63,7 +63,7 @@ static int *in_alloc_binds(int drv_id, int key_count)
                        if (defbinds[i].bit == 0 && defbinds[i].btype == 0
                            && defbinds[i].bit == 0)
                                break;
-                       binds[IN_BIND_OFFS(defbinds[i].code, defbinds[i].btype)] =
+                       binds[IN_BIND_OFFS(defbinds[i].code, defbinds[i].btype)] |=
                                1 << defbinds[i].bit;
                }
 
@@ -808,7 +808,8 @@ int in_config_parse_dev(const char *name)
        if (in_devices[i].name == NULL)
                return -1;
 
-       in_devices[i].key_names = DRV(drv_id).get_key_names(&in_devices[i].key_count);
+       in_devices[i].key_names = DRV(drv_id).get_key_names(&DRV(drv_id),
+                               &in_devices[i].key_count);
        in_devices[i].drv_id = drv_id;
 
        if (i + 1 > in_dev_count)