mirror of
https://github.com/labwc/labwc.git
synced 2025-11-02 09:01:47 -05:00
config/keybind.c: Don't overwrite the stack
This commit is contained in:
parent
a47931bba2
commit
f28319be54
2 changed files with 9 additions and 1 deletions
|
|
@ -5,6 +5,8 @@
|
|||
#include <wlr/types/wlr_keyboard.h>
|
||||
#include <xkbcommon/xkbcommon.h>
|
||||
|
||||
#define MAX_KEYSYMS 32
|
||||
|
||||
struct keybind {
|
||||
uint32_t modifiers;
|
||||
xkb_keysym_t *keysyms;
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ struct keybind *
|
|||
keybind_create(const char *keybind)
|
||||
{
|
||||
struct keybind *k = calloc(1, sizeof(struct keybind));
|
||||
xkb_keysym_t keysyms[32];
|
||||
xkb_keysym_t keysyms[MAX_KEYSYMS];
|
||||
gchar **symnames = g_strsplit(keybind, "-", -1);
|
||||
for (int i = 0; symnames[i]; i++) {
|
||||
char *symname = symnames[i];
|
||||
|
|
@ -46,6 +46,12 @@ keybind_create(const char *keybind)
|
|||
}
|
||||
keysyms[k->keysyms_len] = sym;
|
||||
k->keysyms_len++;
|
||||
if (k->keysyms_len == MAX_KEYSYMS) {
|
||||
wlr_log(WLR_ERROR, "There are a lot of fingers involved. "
|
||||
"We stopped counting at %u.", MAX_KEYSYMS);
|
||||
wlr_log(WLR_ERROR, "Offending keybind was %s", keybind);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
g_strfreev(symnames);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue